plex-api-client 0.28.2__tar.gz → 0.29.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. plex_api_client-0.29.1/PKG-INFO +889 -0
  2. plex_api_client-0.29.1/README-PYPI.md +871 -0
  3. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/pyproject.toml +3 -1
  4. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/_version.py +3 -3
  5. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/activities.py +41 -84
  6. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/authentication.py +89 -170
  7. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/basesdk.py +4 -4
  8. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/butler.py +95 -204
  9. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/hubs.py +55 -120
  10. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/library.py +373 -818
  11. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/log.py +55 -120
  12. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/media.py +103 -196
  13. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/components/__init__.py +3 -2
  14. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/__init__.py +12 -2
  15. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/addplaylistcontents.py +19 -11
  16. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/applyupdates.py +19 -11
  17. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/cancelserveractivities.py +19 -11
  18. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/checkforupdates.py +19 -11
  19. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/clearplaylistcontents.py +19 -11
  20. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/createplaylist.py +19 -11
  21. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/deletelibrary.py +19 -11
  22. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/deleteplaylist.py +19 -11
  23. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/enablepapertrail.py +19 -11
  24. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_actors_library.py +19 -11
  25. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_all_libraries.py +19 -11
  26. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_banner_image.py +19 -11
  27. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_countries_library.py +19 -11
  28. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_genres_library.py +19 -11
  29. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_library_details.py +19 -11
  30. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_library_items.py +19 -11
  31. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_library_sections_all.py +19 -11
  32. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_media_meta_data.py +19 -11
  33. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_media_providers.py +19 -11
  34. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_recently_added_library.py +19 -11
  35. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_refresh_library_metadata.py +19 -11
  36. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_search_all_libraries.py +19 -11
  37. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_search_library.py +19 -11
  38. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_server_identity.py +11 -5
  39. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_server_resources.py +19 -11
  40. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_thumb_image.py +19 -11
  41. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_users.py +19 -11
  42. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/get_watch_list.py +19 -11
  43. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getavailableclients.py +19 -11
  44. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getbandwidthstatistics.py +19 -11
  45. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getbutlertasks.py +19 -11
  46. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getcompanionsdata.py +19 -11
  47. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getdevices.py +19 -11
  48. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getfilehash.py +19 -11
  49. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getgeodata.py +19 -11
  50. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getglobalhubs.py +19 -11
  51. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gethomedata.py +19 -11
  52. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getlibraryhubs.py +19 -11
  53. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getmetadatachildren.py +19 -11
  54. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getmyplexaccount.py +19 -11
  55. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getpin.py +10 -6
  56. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getplaylist.py +19 -11
  57. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getplaylistcontents.py +19 -11
  58. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getplaylists.py +19 -11
  59. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getresizedphoto.py +19 -11
  60. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getresourcesstatistics.py +19 -11
  61. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getsearchresults.py +19 -11
  62. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getserveractivities.py +19 -11
  63. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getservercapabilities.py +19 -11
  64. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getserverlist.py +19 -11
  65. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getserverpreferences.py +19 -11
  66. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getsessionhistory.py +19 -11
  67. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getsessions.py +19 -11
  68. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getsourceconnectioninformation.py +19 -15
  69. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getstatistics.py +19 -11
  70. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gettimeline.py +19 -11
  71. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gettokenbypinid.py +19 -11
  72. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gettokendetails.py +19 -11
  73. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gettopwatchedcontent.py +19 -11
  74. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gettranscodesessions.py +19 -11
  75. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/gettransienttoken.py +19 -11
  76. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getupdatestatus.py +19 -11
  77. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/getuserfriends.py +19 -11
  78. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/logline.py +19 -11
  79. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/logmultiline.py +19 -11
  80. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/markplayed.py +19 -11
  81. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/markunplayed.py +19 -11
  82. plex_api_client-0.29.1/src/plex_api_client/models/errors/no_response_error.py +13 -0
  83. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/performsearch.py +19 -11
  84. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/performvoicesearch.py +19 -11
  85. plex_api_client-0.29.1/src/plex_api_client/models/errors/plexapierror.py +26 -0
  86. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/post_users_sign_in_data.py +19 -11
  87. plex_api_client-0.29.1/src/plex_api_client/models/errors/responsevalidationerror.py +25 -0
  88. plex_api_client-0.29.1/src/plex_api_client/models/errors/sdkerror.py +38 -0
  89. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/startalltasks.py +19 -11
  90. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/starttask.py +19 -11
  91. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/startuniversaltranscode.py +19 -11
  92. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/stopalltasks.py +19 -11
  93. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/stoptask.py +19 -11
  94. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/stoptranscodesession.py +19 -11
  95. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/updateplaylist.py +19 -11
  96. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/updateplayprogress.py +19 -11
  97. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/errors/uploadplaylist.py +19 -11
  98. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/__init__.py +3 -2
  99. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/playlists.py +183 -380
  100. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/plex.py +149 -302
  101. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/search.py +59 -124
  102. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/server.py +189 -388
  103. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/sessions.py +85 -172
  104. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/statistics.py +67 -136
  105. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/updater.py +59 -124
  106. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/users.py +19 -40
  107. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/__init__.py +3 -2
  108. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/forms.py +49 -28
  109. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/serializers.py +3 -2
  110. plex_api_client-0.29.1/src/plex_api_client/utils/unmarshal_json_response.py +24 -0
  111. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/video.py +37 -80
  112. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/watchlist.py +23 -44
  113. plex_api_client-0.28.2/PKG-INFO +0 -717
  114. plex_api_client-0.28.2/README-PYPI.md +0 -699
  115. plex_api_client-0.28.2/src/plex_api_client/models/errors/sdkerror.py +0 -22
  116. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/LICENSE.md +0 -0
  117. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/py.typed +0 -0
  118. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/__init__.py +0 -0
  119. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/_hooks/__init__.py +0 -0
  120. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/_hooks/registration.py +0 -0
  121. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/_hooks/sdkhooks.py +0 -0
  122. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/_hooks/types.py +0 -0
  123. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/httpclient.py +0 -0
  124. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/__init__.py +0 -0
  125. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/components/security.py +0 -0
  126. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/addplaylistcontents.py +0 -0
  127. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/applyupdates.py +0 -0
  128. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/cancelserveractivities.py +0 -0
  129. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/checkforupdates.py +0 -0
  130. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/clearplaylistcontents.py +0 -0
  131. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/createplaylist.py +0 -0
  132. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/deletelibrary.py +0 -0
  133. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/deleteplaylist.py +0 -0
  134. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/enablepapertrail.py +0 -0
  135. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_actors_library.py +0 -0
  136. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_all_libraries.py +0 -0
  137. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_banner_image.py +0 -0
  138. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_countries_library.py +0 -0
  139. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_genres_library.py +0 -0
  140. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_library_details.py +0 -0
  141. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_library_items.py +0 -0
  142. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_library_sections_all.py +0 -0
  143. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_media_arts.py +0 -0
  144. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_media_meta_data.py +0 -0
  145. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_media_posters.py +0 -0
  146. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_media_providers.py +0 -0
  147. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_recently_added.py +0 -0
  148. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_recently_added_library.py +0 -0
  149. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_refresh_library_metadata.py +0 -0
  150. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_search_all_libraries.py +0 -0
  151. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_search_library.py +0 -0
  152. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_server_identity.py +0 -0
  153. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_server_resources.py +0 -0
  154. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_thumb_image.py +0 -0
  155. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_users.py +0 -0
  156. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/get_watch_list.py +0 -0
  157. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getavailableclients.py +0 -0
  158. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getbandwidthstatistics.py +0 -0
  159. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getbutlertasks.py +0 -0
  160. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getcompanionsdata.py +0 -0
  161. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getdevices.py +0 -0
  162. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getfilehash.py +0 -0
  163. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getgeodata.py +0 -0
  164. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getglobalhubs.py +0 -0
  165. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gethomedata.py +0 -0
  166. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getlibraryhubs.py +0 -0
  167. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getmetadatachildren.py +0 -0
  168. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getmyplexaccount.py +0 -0
  169. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getpin.py +0 -0
  170. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getplaylist.py +0 -0
  171. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getplaylistcontents.py +0 -0
  172. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getplaylists.py +0 -0
  173. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getresizedphoto.py +0 -0
  174. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getresourcesstatistics.py +0 -0
  175. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getsearchresults.py +0 -0
  176. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getserveractivities.py +0 -0
  177. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getservercapabilities.py +0 -0
  178. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getserverlist.py +0 -0
  179. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getserverpreferences.py +0 -0
  180. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getsessionhistory.py +0 -0
  181. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getsessions.py +0 -0
  182. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getsourceconnectioninformation.py +0 -0
  183. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getstatistics.py +0 -0
  184. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gettimeline.py +0 -0
  185. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gettokenbypinid.py +0 -0
  186. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gettokendetails.py +0 -0
  187. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gettopwatchedcontent.py +0 -0
  188. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gettranscodesessions.py +0 -0
  189. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/gettransienttoken.py +0 -0
  190. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getupdatestatus.py +0 -0
  191. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/getuserfriends.py +0 -0
  192. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/logline.py +0 -0
  193. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/logmultiline.py +0 -0
  194. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/markplayed.py +0 -0
  195. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/markunplayed.py +0 -0
  196. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/performsearch.py +0 -0
  197. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/performvoicesearch.py +0 -0
  198. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/post_media_arts.py +0 -0
  199. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/post_media_poster.py +0 -0
  200. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/post_users_sign_in_data.py +0 -0
  201. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/startalltasks.py +0 -0
  202. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/starttask.py +0 -0
  203. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/startuniversaltranscode.py +0 -0
  204. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/stopalltasks.py +0 -0
  205. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/stoptask.py +0 -0
  206. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/stoptranscodesession.py +0 -0
  207. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/updateplaylist.py +0 -0
  208. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/updateplayprogress.py +0 -0
  209. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/models/operations/uploadplaylist.py +0 -0
  210. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/py.typed +0 -0
  211. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/sdk.py +0 -0
  212. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/sdkconfiguration.py +0 -0
  213. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/types/__init__.py +0 -0
  214. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/types/basemodel.py +0 -0
  215. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/annotations.py +0 -0
  216. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/datetimes.py +0 -0
  217. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/enums.py +0 -0
  218. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/eventstreaming.py +0 -0
  219. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/headers.py +0 -0
  220. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/logger.py +0 -0
  221. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/metadata.py +0 -0
  222. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/queryparams.py +0 -0
  223. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/requestbodies.py +0 -0
  224. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/retries.py +0 -0
  225. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/security.py +0 -0
  226. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/url.py +0 -0
  227. {plex_api_client-0.28.2 → plex_api_client-0.29.1}/src/plex_api_client/utils/values.py +0 -0
@@ -0,0 +1,889 @@
1
+ Metadata-Version: 2.3
2
+ Name: plex-api-client
3
+ Version: 0.29.1
4
+ Summary: Python Client SDK Generated by Speakeasy
5
+ Author: Speakeasy
6
+ Requires-Python: >=3.9.2
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Requires-Dist: httpcore (>=1.0.9)
13
+ Requires-Dist: httpx (>=0.28.1)
14
+ Requires-Dist: pydantic (>=2.11.2)
15
+ Project-URL: Repository, https://github.com/LukeHagar/plexpy.git
16
+ Description-Content-Type: text/markdown
17
+
18
+ # plexpy
19
+
20
+ <div align="left">
21
+ <a href="https://speakeasyapi.dev/"><img src="https://custom-icon-badges.demolab.com/badge/-Built%20By%20Speakeasy-212015?style=for-the-badge&logoColor=FBE331&logo=speakeasy&labelColor=545454" /></a>
22
+ <a href="https://opensource.org/licenses/MIT">
23
+ <img src="https://img.shields.io/badge/License-MIT-blue.svg" style="width: 100px; height: 28px;" />
24
+ </a>
25
+ </div>
26
+
27
+ <!-- Start Summary [summary] -->
28
+ ## Summary
29
+
30
+ Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server
31
+
32
+ # Plex Media Server OpenAPI Specification
33
+
34
+ An Open Source OpenAPI Specification for Plex Media Server
35
+
36
+ Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/)
37
+
38
+ ## Documentation
39
+
40
+ [API Documentation](https://plexapi.dev)
41
+
42
+ ## SDKs
43
+
44
+ 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).
45
+
46
+ | Language | Repository | Releases | Other |
47
+ | --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
48
+ | Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - |
49
+ | JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - |
50
+ | Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) |
51
+ | Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - |
52
+ | Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - |
53
+ | PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - |
54
+ | Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - |
55
+ | C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | -
56
+ <!-- End Summary [summary] -->
57
+
58
+ <!-- Start Table of Contents [toc] -->
59
+ ## Table of Contents
60
+ <!-- $toc-max-depth=2 -->
61
+ * [plexpy](https://github.com/LukeHagar/plexpy/blob/master/#plexpy)
62
+ * [Plex Media Server OpenAPI Specification](https://github.com/LukeHagar/plexpy/blob/master/#plex-media-server-openapi-specification)
63
+ * [Documentation](https://github.com/LukeHagar/plexpy/blob/master/#documentation)
64
+ * [SDKs](https://github.com/LukeHagar/plexpy/blob/master/#sdks)
65
+ * [SDK Installation](https://github.com/LukeHagar/plexpy/blob/master/#sdk-installation)
66
+ * [IDE Support](https://github.com/LukeHagar/plexpy/blob/master/#ide-support)
67
+ * [SDK Example Usage](https://github.com/LukeHagar/plexpy/blob/master/#sdk-example-usage)
68
+ * [Available Resources and Operations](https://github.com/LukeHagar/plexpy/blob/master/#available-resources-and-operations)
69
+ * [File uploads](https://github.com/LukeHagar/plexpy/blob/master/#file-uploads)
70
+ * [Retries](https://github.com/LukeHagar/plexpy/blob/master/#retries)
71
+ * [Error Handling](https://github.com/LukeHagar/plexpy/blob/master/#error-handling)
72
+ * [Server Selection](https://github.com/LukeHagar/plexpy/blob/master/#server-selection)
73
+ * [Custom HTTP Client](https://github.com/LukeHagar/plexpy/blob/master/#custom-http-client)
74
+ * [Authentication](https://github.com/LukeHagar/plexpy/blob/master/#authentication)
75
+ * [Resource Management](https://github.com/LukeHagar/plexpy/blob/master/#resource-management)
76
+ * [Debugging](https://github.com/LukeHagar/plexpy/blob/master/#debugging)
77
+ * [Development](https://github.com/LukeHagar/plexpy/blob/master/#development)
78
+ * [Maturity](https://github.com/LukeHagar/plexpy/blob/master/#maturity)
79
+ * [Contributions](https://github.com/LukeHagar/plexpy/blob/master/#contributions)
80
+
81
+ <!-- End Table of Contents [toc] -->
82
+
83
+ <!-- Start SDK Installation [installation] -->
84
+ ## SDK Installation
85
+
86
+ > [!NOTE]
87
+ > **Python version upgrade policy**
88
+ >
89
+ > Once a Python version reaches its [official end of life date](https://devguide.python.org/versions/), a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated.
90
+
91
+ The SDK can be installed with either *pip* or *poetry* package managers.
92
+
93
+ ### PIP
94
+
95
+ *PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line.
96
+
97
+ ```bash
98
+ pip install plex-api-client
99
+ ```
100
+
101
+ ### Poetry
102
+
103
+ *Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies.
104
+
105
+ ```bash
106
+ poetry add plex-api-client
107
+ ```
108
+
109
+ ### Shell and script usage with `uv`
110
+
111
+ You can use this SDK in a Python shell with [uv](https://docs.astral.sh/uv/) and the `uvx` command that comes with it like so:
112
+
113
+ ```shell
114
+ uvx --from plex-api-client python
115
+ ```
116
+
117
+ It's also possible to write a standalone Python script without needing to set up a whole project like so:
118
+
119
+ ```python
120
+ #!/usr/bin/env -S uv run --script
121
+ # /// script
122
+ # requires-python = ">=3.9"
123
+ # dependencies = [
124
+ # "plex-api-client",
125
+ # ]
126
+ # ///
127
+
128
+ from plex_api_client import PlexAPI
129
+
130
+ sdk = PlexAPI(
131
+ # SDK arguments
132
+ )
133
+
134
+ # Rest of script here...
135
+ ```
136
+
137
+ Once that is saved to a file, you can run it with `uv run script.py` where
138
+ `script.py` can be replaced with the actual file name.
139
+ <!-- End SDK Installation [installation] -->
140
+
141
+ <!-- Start IDE Support [idesupport] -->
142
+ ## IDE Support
143
+
144
+ ### PyCharm
145
+
146
+ Generally, the SDK will work well with most IDEs out of the box. However, when using PyCharm, you can enjoy much better integration with Pydantic by installing an additional plugin.
147
+
148
+ - [PyCharm Pydantic Plugin](https://docs.pydantic.dev/latest/integrations/pycharm/)
149
+ <!-- End IDE Support [idesupport] -->
150
+
151
+ <!-- Start SDK Example Usage [usage] -->
152
+ ## SDK Example Usage
153
+
154
+ ### Example
155
+
156
+ ```python
157
+ # Synchronous Example
158
+ from plex_api_client import PlexAPI
159
+
160
+
161
+ with PlexAPI(
162
+ access_token="<YOUR_API_KEY_HERE>",
163
+ ) as plex_api:
164
+
165
+ res = plex_api.server.get_server_capabilities()
166
+
167
+ assert res.object is not None
168
+
169
+ # Handle response
170
+ print(res.object)
171
+ ```
172
+
173
+ </br>
174
+
175
+ The same SDK client can also be used to make asychronous requests by importing asyncio.
176
+ ```python
177
+ # Asynchronous Example
178
+ import asyncio
179
+ from plex_api_client import PlexAPI
180
+
181
+ async def main():
182
+
183
+ async with PlexAPI(
184
+ access_token="<YOUR_API_KEY_HERE>",
185
+ ) as plex_api:
186
+
187
+ res = await plex_api.server.get_server_capabilities_async()
188
+
189
+ assert res.object is not None
190
+
191
+ # Handle response
192
+ print(res.object)
193
+
194
+ asyncio.run(main())
195
+ ```
196
+ <!-- End SDK Example Usage [usage] -->
197
+
198
+ <!-- Start Available Resources and Operations [operations] -->
199
+ ## Available Resources and Operations
200
+
201
+ <details open>
202
+ <summary>Available methods</summary>
203
+
204
+ ### [activities](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/activities/README.md)
205
+
206
+ * [get_server_activities](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/activities/README.md#get_server_activities) - Get Server Activities
207
+ * [cancel_server_activities](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/activities/README.md#cancel_server_activities) - Cancel Server Activities
208
+
209
+ ### [authentication](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/authentication/README.md)
210
+
211
+ * [get_transient_token](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/authentication/README.md#get_transient_token) - Get a Transient Token
212
+ * [get_source_connection_information](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/authentication/README.md#get_source_connection_information) - Get Source Connection Information
213
+ * [get_token_details](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/authentication/README.md#get_token_details) - Get Token Details
214
+ * [post_users_sign_in_data](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/authentication/README.md#post_users_sign_in_data) - Get User Sign In Data
215
+
216
+ ### [butler](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/butler/README.md)
217
+
218
+ * [get_butler_tasks](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/butler/README.md#get_butler_tasks) - Get Butler tasks
219
+ * [start_all_tasks](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/butler/README.md#start_all_tasks) - Start all Butler tasks
220
+ * [stop_all_tasks](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/butler/README.md#stop_all_tasks) - Stop all Butler tasks
221
+ * [start_task](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/butler/README.md#start_task) - Start a single Butler task
222
+ * [stop_task](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/butler/README.md#stop_task) - Stop a single Butler task
223
+
224
+ ### [hubs](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/hubs/README.md)
225
+
226
+ * [get_global_hubs](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/hubs/README.md#get_global_hubs) - Get Global Hubs
227
+ * [get_recently_added](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/hubs/README.md#get_recently_added) - Get Recently Added
228
+ * [get_library_hubs](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/hubs/README.md#get_library_hubs) - Get library specific hubs
229
+
230
+ ### [library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md)
231
+
232
+ * [get_file_hash](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_file_hash) - Get Hash Value
233
+ * [get_recently_added_library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_recently_added_library) - Get Recently Added
234
+ * [get_all_libraries](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_all_libraries) - Get All Libraries
235
+ * [get_library_details](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_library_details) - Get Library Details
236
+ * [delete_library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#delete_library) - Delete Library Section
237
+ * [get_library_items](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_library_items) - Get Library Items
238
+ * [get_library_sections_all](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_library_sections_all) - Get Library section media by tag ALL
239
+ * [get_refresh_library_metadata](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_refresh_library_metadata) - Refresh Metadata Of The Library
240
+ * [get_search_library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_search_library) - Search Library
241
+ * [get_genres_library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_genres_library) - Get Genres of library media
242
+ * [get_countries_library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_countries_library) - Get Countries of library media
243
+ * [get_actors_library](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_actors_library) - Get Actors of library media
244
+ * [get_search_all_libraries](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_search_all_libraries) - Search All Libraries
245
+ * [get_media_meta_data](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_media_meta_data) - Get Media Metadata
246
+ * [get_media_arts](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_media_arts) - Get Media Background Artwork
247
+ * [post_media_arts](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#post_media_arts) - Upload Media Background Artwork
248
+ * [get_media_posters](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_media_posters) - Get Media Posters
249
+ * [post_media_poster](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#post_media_poster) - Upload Media Poster
250
+ * [get_metadata_children](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_metadata_children) - Get Items Children
251
+ * [get_top_watched_content](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/library/README.md#get_top_watched_content) - Get Top Watched Content
252
+
253
+ ### [log](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/log/README.md)
254
+
255
+ * [log_line](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/log/README.md#log_line) - Logging a single line message.
256
+ * [log_multi_line](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/log/README.md#log_multi_line) - Logging a multi-line message
257
+ * [enable_paper_trail](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/log/README.md#enable_paper_trail) - Enabling Papertrail
258
+
259
+ ### [media](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/media/README.md)
260
+
261
+ * [mark_played](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/media/README.md#mark_played) - Mark Media Played
262
+ * [mark_unplayed](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/media/README.md#mark_unplayed) - Mark Media Unplayed
263
+ * [update_play_progress](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/media/README.md#update_play_progress) - Update Media Play Progress
264
+ * [get_banner_image](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/media/README.md#get_banner_image) - Get Banner Image
265
+ * [get_thumb_image](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/media/README.md#get_thumb_image) - Get Thumb Image
266
+
267
+ ### [playlists](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md)
268
+
269
+ * [create_playlist](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#create_playlist) - Create a Playlist
270
+ * [get_playlists](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#get_playlists) - Get All Playlists
271
+ * [get_playlist](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#get_playlist) - Retrieve Playlist
272
+ * [delete_playlist](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#delete_playlist) - Deletes a Playlist
273
+ * [update_playlist](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#update_playlist) - Update a Playlist
274
+ * [get_playlist_contents](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#get_playlist_contents) - Retrieve Playlist Contents
275
+ * [clear_playlist_contents](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#clear_playlist_contents) - Delete Playlist Contents
276
+ * [add_playlist_contents](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#add_playlist_contents) - Adding to a Playlist
277
+ * [upload_playlist](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/playlists/README.md#upload_playlist) - Upload Playlist
278
+
279
+ ### [plex](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md)
280
+
281
+ * [get_companions_data](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_companions_data) - Get Companions Data
282
+ * [get_user_friends](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_user_friends) - Get list of friends of the user logged in
283
+ * [get_geo_data](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_geo_data) - Get Geo Data
284
+ * [get_home_data](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_home_data) - Get Plex Home Data
285
+ * [get_server_resources](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_server_resources) - Get Server Resources
286
+ * [get_pin](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_pin) - Get a Pin
287
+ * [get_token_by_pin_id](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/plex/README.md#get_token_by_pin_id) - Get Access Token by PinId
288
+
289
+
290
+ ### [search](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/search/README.md)
291
+
292
+ * [perform_search](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/search/README.md#perform_search) - Perform a search
293
+ * [perform_voice_search](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/search/README.md#perform_voice_search) - Perform a voice search
294
+ * [get_search_results](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/search/README.md#get_search_results) - Get Search Results
295
+
296
+ ### [server](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md)
297
+
298
+ * [get_server_capabilities](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_server_capabilities) - Get Server Capabilities
299
+ * [get_server_preferences](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_server_preferences) - Get Server Preferences
300
+ * [get_available_clients](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_available_clients) - Get Available Clients
301
+ * [get_devices](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_devices) - Get Devices
302
+ * [get_server_identity](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_server_identity) - Get Server Identity
303
+ * [get_my_plex_account](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_my_plex_account) - Get MyPlex Account
304
+ * [get_resized_photo](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_resized_photo) - Get a Resized Photo
305
+ * [get_media_providers](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_media_providers) - Get Media Providers
306
+ * [get_server_list](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/server/README.md#get_server_list) - Get Server List
307
+
308
+ ### [sessions](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/sessions/README.md)
309
+
310
+ * [get_sessions](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/sessions/README.md#get_sessions) - Get Active Sessions
311
+ * [get_session_history](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/sessions/README.md#get_session_history) - Get Session History
312
+ * [get_transcode_sessions](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/sessions/README.md#get_transcode_sessions) - Get Transcode Sessions
313
+ * [stop_transcode_session](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/sessions/README.md#stop_transcode_session) - Stop a Transcode Session
314
+
315
+ ### [statistics](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/statistics/README.md)
316
+
317
+ * [get_statistics](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/statistics/README.md#get_statistics) - Get Media Statistics
318
+ * [get_resources_statistics](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/statistics/README.md#get_resources_statistics) - Get Resources Statistics
319
+ * [get_bandwidth_statistics](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/statistics/README.md#get_bandwidth_statistics) - Get Bandwidth Statistics
320
+
321
+ ### [updater](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/updater/README.md)
322
+
323
+ * [get_update_status](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/updater/README.md#get_update_status) - Querying status of updates
324
+ * [check_for_updates](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/updater/README.md#check_for_updates) - Checking for updates
325
+ * [apply_updates](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/updater/README.md#apply_updates) - Apply Updates
326
+
327
+ ### [users](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/users/README.md)
328
+
329
+ * [get_users](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/users/README.md#get_users) - Get list of all connected users
330
+
331
+ ### [video](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/video/README.md)
332
+
333
+ * [get_timeline](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item
334
+ * [start_universal_transcode](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/video/README.md#start_universal_transcode) - Start Universal Transcode
335
+
336
+ ### [watchlist](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/watchlist/README.md)
337
+
338
+ * [get_watch_list](https://github.com/LukeHagar/plexpy/blob/master/docs/sdks/watchlist/README.md#get_watch_list) - Get User Watchlist
339
+
340
+ </details>
341
+ <!-- End Available Resources and Operations [operations] -->
342
+
343
+ <!-- Start File uploads [file-upload] -->
344
+ ## File uploads
345
+
346
+ Certain SDK methods accept file objects as part of a request body or multi-part request. It is possible and typically recommended to upload files as a stream rather than reading the entire contents into memory. This avoids excessive memory consumption and potentially crashing with out-of-memory errors when working with very large files. The following example demonstrates how to attach a file stream to a request.
347
+
348
+ > [!TIP]
349
+ >
350
+ > For endpoints that handle file uploads bytes arrays can also be used. However, using streams is recommended for large files.
351
+ >
352
+
353
+ ```python
354
+ from plex_api_client import PlexAPI
355
+
356
+
357
+ with PlexAPI(
358
+ access_token="<YOUR_API_KEY_HERE>",
359
+ ) as plex_api:
360
+
361
+ res = plex_api.library.post_media_arts(rating_key=2268, url="https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b")
362
+
363
+ assert res is not None
364
+
365
+ # Handle response
366
+ print(res)
367
+
368
+ ```
369
+ <!-- End File uploads [file-upload] -->
370
+
371
+ <!-- Start Retries [retries] -->
372
+ ## Retries
373
+
374
+ Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
375
+
376
+ To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call:
377
+ ```python
378
+ from plex_api_client import PlexAPI
379
+ from plex_api_client.utils import BackoffStrategy, RetryConfig
380
+
381
+
382
+ with PlexAPI(
383
+ access_token="<YOUR_API_KEY_HERE>",
384
+ ) as plex_api:
385
+
386
+ res = plex_api.server.get_server_capabilities(,
387
+ RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
388
+
389
+ assert res.object is not None
390
+
391
+ # Handle response
392
+ print(res.object)
393
+
394
+ ```
395
+
396
+ 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:
397
+ ```python
398
+ from plex_api_client import PlexAPI
399
+ from plex_api_client.utils import BackoffStrategy, RetryConfig
400
+
401
+
402
+ with PlexAPI(
403
+ retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False),
404
+ access_token="<YOUR_API_KEY_HERE>",
405
+ ) as plex_api:
406
+
407
+ res = plex_api.server.get_server_capabilities()
408
+
409
+ assert res.object is not None
410
+
411
+ # Handle response
412
+ print(res.object)
413
+
414
+ ```
415
+ <!-- End Retries [retries] -->
416
+
417
+ <!-- Start Error Handling [errors] -->
418
+ ## Error Handling
419
+
420
+ [`PlexAPIError`](https://github.com/LukeHagar/plexpy/blob/master/./src/plex_api_client/models/errors/plexapierror.py) is the base class for all HTTP error responses. It has the following properties:
421
+
422
+ | Property | Type | Description |
423
+ | ------------------ | ---------------- | --------------------------------------------------------------------------------------- |
424
+ | `err.message` | `str` | Error message |
425
+ | `err.status_code` | `int` | HTTP response status code eg `404` |
426
+ | `err.headers` | `httpx.Headers` | HTTP response headers |
427
+ | `err.body` | `str` | HTTP body. Can be empty string if no body is returned. |
428
+ | `err.raw_response` | `httpx.Response` | Raw HTTP response |
429
+ | `err.data` | | Optional. Some errors may contain structured data. [See Error Classes](https://github.com/LukeHagar/plexpy/blob/master/#error-classes). |
430
+
431
+ ### Example
432
+ ```python
433
+ from plex_api_client import PlexAPI
434
+ from plex_api_client.models import errors
435
+
436
+
437
+ with PlexAPI(
438
+ access_token="<YOUR_API_KEY_HERE>",
439
+ ) as plex_api:
440
+ res = None
441
+ try:
442
+
443
+ res = plex_api.server.get_server_capabilities()
444
+
445
+ assert res.object is not None
446
+
447
+ # Handle response
448
+ print(res.object)
449
+
450
+
451
+ except errors.PlexAPIError as e:
452
+ # The base class for HTTP error responses
453
+ print(e.message)
454
+ print(e.status_code)
455
+ print(e.body)
456
+ print(e.headers)
457
+ print(e.raw_response)
458
+
459
+ # Depending on the method different errors may be thrown
460
+ if isinstance(e, errors.GetServerCapabilitiesBadRequest):
461
+ print(e.data.errors) # Optional[List[errors.Errors]]
462
+ print(e.data.raw_response) # Optional[httpx.Response]
463
+ ```
464
+
465
+ ### Error Classes
466
+ **Primary error:**
467
+ * [`PlexAPIError`](https://github.com/LukeHagar/plexpy/blob/master/./src/plex_api_client/models/errors/plexapierror.py): The base class for HTTP error responses.
468
+
469
+ <details><summary>Less common errors (161)</summary>
470
+
471
+ <br />
472
+
473
+ **Network errors:**
474
+ * [`httpx.RequestError`](https://www.python-httpx.org/exceptions/#httpx.RequestError): Base class for request errors.
475
+ * [`httpx.ConnectError`](https://www.python-httpx.org/exceptions/#httpx.ConnectError): HTTP client was unable to make a request to a server.
476
+ * [`httpx.TimeoutException`](https://www.python-httpx.org/exceptions/#httpx.TimeoutException): HTTP request timed out.
477
+
478
+
479
+ **Inherit from [`PlexAPIError`](https://github.com/LukeHagar/plexpy/blob/master/./src/plex_api_client/models/errors/plexapierror.py)**:
480
+ * [`GetServerCapabilitiesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
481
+ * [`GetServerPreferencesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
482
+ * [`GetAvailableClientsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
483
+ * [`GetDevicesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
484
+ * [`GetMyPlexAccountBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
485
+ * [`GetResizedPhotoBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
486
+ * [`GetMediaProvidersBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
487
+ * [`GetServerListBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
488
+ * [`MarkPlayedBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
489
+ * [`MarkUnplayedBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
490
+ * [`UpdatePlayProgressBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
491
+ * [`GetBannerImageBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
492
+ * [`GetThumbImageBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
493
+ * [`GetTimelineBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
494
+ * [`StartUniversalTranscodeBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
495
+ * [`GetServerActivitiesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
496
+ * [`CancelServerActivitiesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
497
+ * [`GetButlerTasksBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
498
+ * [`StartAllTasksBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
499
+ * [`StopAllTasksBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
500
+ * [`StartTaskBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
501
+ * [`StopTaskBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
502
+ * [`GetCompanionsDataBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
503
+ * [`GetUserFriendsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
504
+ * [`GetGeoDataBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
505
+ * [`GetHomeDataBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
506
+ * [`GetServerResourcesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
507
+ * [`GetPinBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
508
+ * [`GetTokenByPinIDBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
509
+ * [`GetGlobalHubsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
510
+ * [`GetLibraryHubsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
511
+ * [`PerformSearchBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
512
+ * [`PerformVoiceSearchBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
513
+ * [`GetSearchResultsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
514
+ * [`GetFileHashBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
515
+ * [`GetRecentlyAddedLibraryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
516
+ * [`GetAllLibrariesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
517
+ * [`GetLibraryDetailsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
518
+ * [`DeleteLibraryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
519
+ * [`GetLibraryItemsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
520
+ * [`GetLibrarySectionsAllBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
521
+ * [`GetRefreshLibraryMetadataBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
522
+ * [`GetSearchLibraryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
523
+ * [`GetGenresLibraryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
524
+ * [`GetCountriesLibraryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
525
+ * [`GetActorsLibraryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
526
+ * [`GetSearchAllLibrariesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
527
+ * [`GetMediaMetaDataBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
528
+ * [`GetMetadataChildrenBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
529
+ * [`GetTopWatchedContentBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
530
+ * [`GetWatchListBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
531
+ * [`LogLineBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
532
+ * [`LogMultiLineBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
533
+ * [`EnablePaperTrailBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
534
+ * [`CreatePlaylistBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
535
+ * [`GetPlaylistsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
536
+ * [`GetPlaylistBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
537
+ * [`DeletePlaylistBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
538
+ * [`UpdatePlaylistBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
539
+ * [`GetPlaylistContentsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
540
+ * [`ClearPlaylistContentsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
541
+ * [`AddPlaylistContentsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
542
+ * [`UploadPlaylistBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
543
+ * [`GetTransientTokenBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
544
+ * [`GetSourceConnectionInformationBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
545
+ * [`GetTokenDetailsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
546
+ * [`PostUsersSignInDataBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
547
+ * [`GetStatisticsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
548
+ * [`GetResourcesStatisticsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
549
+ * [`GetBandwidthStatisticsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
550
+ * [`GetSessionsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
551
+ * [`GetSessionHistoryBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
552
+ * [`GetTranscodeSessionsBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
553
+ * [`StopTranscodeSessionBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
554
+ * [`GetUpdateStatusBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
555
+ * [`CheckForUpdatesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
556
+ * [`ApplyUpdatesBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
557
+ * [`GetUsersBadRequest`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
558
+ * [`GetServerCapabilitiesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
559
+ * [`GetServerPreferencesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
560
+ * [`GetAvailableClientsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
561
+ * [`GetDevicesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
562
+ * [`GetMyPlexAccountUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
563
+ * [`GetResizedPhotoUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
564
+ * [`GetMediaProvidersUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
565
+ * [`GetServerListUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
566
+ * [`MarkPlayedUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
567
+ * [`MarkUnplayedUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
568
+ * [`UpdatePlayProgressUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
569
+ * [`GetBannerImageUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
570
+ * [`GetThumbImageUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
571
+ * [`GetTimelineUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
572
+ * [`StartUniversalTranscodeUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
573
+ * [`GetServerActivitiesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
574
+ * [`CancelServerActivitiesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
575
+ * [`GetButlerTasksUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
576
+ * [`StartAllTasksUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
577
+ * [`StopAllTasksUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
578
+ * [`StartTaskUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
579
+ * [`StopTaskUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
580
+ * [`GetCompanionsDataUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
581
+ * [`GetUserFriendsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
582
+ * [`GetGeoDataUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
583
+ * [`GetHomeDataUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
584
+ * [`GetServerResourcesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
585
+ * [`GetGlobalHubsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
586
+ * [`GetLibraryHubsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
587
+ * [`PerformSearchUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
588
+ * [`PerformVoiceSearchUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
589
+ * [`GetSearchResultsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
590
+ * [`GetFileHashUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
591
+ * [`GetRecentlyAddedLibraryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
592
+ * [`GetAllLibrariesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
593
+ * [`GetLibraryDetailsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
594
+ * [`DeleteLibraryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
595
+ * [`GetLibraryItemsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
596
+ * [`GetLibrarySectionsAllUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
597
+ * [`GetRefreshLibraryMetadataUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
598
+ * [`GetSearchLibraryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
599
+ * [`GetGenresLibraryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
600
+ * [`GetCountriesLibraryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
601
+ * [`GetActorsLibraryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
602
+ * [`GetSearchAllLibrariesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
603
+ * [`GetMediaMetaDataUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
604
+ * [`GetMetadataChildrenUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
605
+ * [`GetTopWatchedContentUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
606
+ * [`GetWatchListUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
607
+ * [`LogLineUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
608
+ * [`LogMultiLineUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
609
+ * [`EnablePaperTrailUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
610
+ * [`CreatePlaylistUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
611
+ * [`GetPlaylistsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
612
+ * [`GetPlaylistUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
613
+ * [`DeletePlaylistUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
614
+ * [`UpdatePlaylistUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
615
+ * [`GetPlaylistContentsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
616
+ * [`ClearPlaylistContentsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
617
+ * [`AddPlaylistContentsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
618
+ * [`UploadPlaylistUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
619
+ * [`GetTransientTokenUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
620
+ * [`GetSourceConnectionInformationUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
621
+ * [`GetTokenDetailsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
622
+ * [`PostUsersSignInDataUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
623
+ * [`GetStatisticsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
624
+ * [`GetResourcesStatisticsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
625
+ * [`GetBandwidthStatisticsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
626
+ * [`GetSessionsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
627
+ * [`GetSessionHistoryUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
628
+ * [`GetTranscodeSessionsUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
629
+ * [`StopTranscodeSessionUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
630
+ * [`GetUpdateStatusUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
631
+ * [`CheckForUpdatesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
632
+ * [`ApplyUpdatesUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
633
+ * [`GetUsersUnauthorized`](https://github.com/LukeHagar/plexpy/blob/master/./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.*
634
+ * [`GetTokenByPinIDResponseBody`](https://github.com/LukeHagar/plexpy/blob/master/./src/plex_api_client/models/errors/gettokenbypinidresponsebody.py): Not Found or Expired. Status code `404`. Applicable to 1 of 84 methods.*
635
+ * [`GetServerIdentityRequestTimeout`](https://github.com/LukeHagar/plexpy/blob/master/./src/plex_api_client/models/errors/getserveridentityrequesttimeout.py): Request Timeout. Status code `408`. Applicable to 1 of 84 methods.*
636
+ * [`ResponseValidationError`](https://github.com/LukeHagar/plexpy/blob/master/./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.
637
+
638
+ </details>
639
+
640
+ \* Check [the method documentation](https://github.com/LukeHagar/plexpy/blob/master/#available-resources-and-operations) to see if the error is applicable.
641
+ <!-- End Error Handling [errors] -->
642
+
643
+ <!-- Start Server Selection [server] -->
644
+ ## Server Selection
645
+
646
+ ### Server Variables
647
+
648
+ 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:
649
+
650
+ | Variable | Parameter | Supported Values | Default | Description |
651
+ | ---------- | --------------------------------- | -------------------------- | --------------- | ---------------------------------------------- |
652
+ | `protocol` | `protocol: models.ServerProtocol` | - `"http"`<br/>- `"https"` | `"https"` | The protocol to use for the server connection |
653
+ | `ip` | `ip: str` | str | `"10.10.10.47"` | The IP address or hostname of your Plex Server |
654
+ | `port` | `port: str` | str | `"32400"` | The port of your Plex Server |
655
+
656
+ #### Example
657
+
658
+ ```python
659
+ from plex_api_client import PlexAPI
660
+
661
+
662
+ with PlexAPI(
663
+ protocol="https"
664
+ ip="4982:bc2a:b4f8:efb5:2394:5bc3:ab4f:0e6d"
665
+ port="44765"
666
+ access_token="<YOUR_API_KEY_HERE>",
667
+ ) as plex_api:
668
+
669
+ res = plex_api.server.get_server_capabilities()
670
+
671
+ assert res.object is not None
672
+
673
+ # Handle response
674
+ print(res.object)
675
+
676
+ ```
677
+
678
+ ### Override Server URL Per-Client
679
+
680
+ 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:
681
+ ```python
682
+ from plex_api_client import PlexAPI
683
+
684
+
685
+ with PlexAPI(
686
+ server_url="https://10.10.10.47:32400",
687
+ access_token="<YOUR_API_KEY_HERE>",
688
+ ) as plex_api:
689
+
690
+ res = plex_api.server.get_server_capabilities()
691
+
692
+ assert res.object is not None
693
+
694
+ # Handle response
695
+ print(res.object)
696
+
697
+ ```
698
+
699
+ ### Override Server URL Per-Operation
700
+
701
+ The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
702
+ ```python
703
+ from plex_api_client import PlexAPI
704
+
705
+
706
+ with PlexAPI(
707
+ access_token="<YOUR_API_KEY_HERE>",
708
+ ) as plex_api:
709
+
710
+ res = plex_api.plex.get_companions_data(server_url="https://plex.tv/api/v2")
711
+
712
+ assert res.response_bodies is not None
713
+
714
+ # Handle response
715
+ print(res.response_bodies)
716
+
717
+ ```
718
+ <!-- End Server Selection [server] -->
719
+
720
+ <!-- Start Custom HTTP Client [http-client] -->
721
+ ## Custom HTTP Client
722
+
723
+ The Python SDK makes API calls using the [httpx](https://www.python-httpx.org/) HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance.
724
+ Depending on whether you are using the sync or async version of the SDK, you can pass an instance of `HttpClient` or `AsyncHttpClient` respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls.
725
+ This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of `httpx.Client` or `httpx.AsyncClient` directly.
726
+
727
+ For example, you could specify a header for every request that this sdk makes as follows:
728
+ ```python
729
+ from plex_api_client import PlexAPI
730
+ import httpx
731
+
732
+ http_client = httpx.Client(headers={"x-custom-header": "someValue"})
733
+ s = PlexAPI(client=http_client)
734
+ ```
735
+
736
+ or you could wrap the client with your own custom logic:
737
+ ```python
738
+ from plex_api_client import PlexAPI
739
+ from plex_api_client.httpclient import AsyncHttpClient
740
+ import httpx
741
+
742
+ class CustomClient(AsyncHttpClient):
743
+ client: AsyncHttpClient
744
+
745
+ def __init__(self, client: AsyncHttpClient):
746
+ self.client = client
747
+
748
+ async def send(
749
+ self,
750
+ request: httpx.Request,
751
+ *,
752
+ stream: bool = False,
753
+ auth: Union[
754
+ httpx._types.AuthTypes, httpx._client.UseClientDefault, None
755
+ ] = httpx.USE_CLIENT_DEFAULT,
756
+ follow_redirects: Union[
757
+ bool, httpx._client.UseClientDefault
758
+ ] = httpx.USE_CLIENT_DEFAULT,
759
+ ) -> httpx.Response:
760
+ request.headers["Client-Level-Header"] = "added by client"
761
+
762
+ return await self.client.send(
763
+ request, stream=stream, auth=auth, follow_redirects=follow_redirects
764
+ )
765
+
766
+ def build_request(
767
+ self,
768
+ method: str,
769
+ url: httpx._types.URLTypes,
770
+ *,
771
+ content: Optional[httpx._types.RequestContent] = None,
772
+ data: Optional[httpx._types.RequestData] = None,
773
+ files: Optional[httpx._types.RequestFiles] = None,
774
+ json: Optional[Any] = None,
775
+ params: Optional[httpx._types.QueryParamTypes] = None,
776
+ headers: Optional[httpx._types.HeaderTypes] = None,
777
+ cookies: Optional[httpx._types.CookieTypes] = None,
778
+ timeout: Union[
779
+ httpx._types.TimeoutTypes, httpx._client.UseClientDefault
780
+ ] = httpx.USE_CLIENT_DEFAULT,
781
+ extensions: Optional[httpx._types.RequestExtensions] = None,
782
+ ) -> httpx.Request:
783
+ return self.client.build_request(
784
+ method,
785
+ url,
786
+ content=content,
787
+ data=data,
788
+ files=files,
789
+ json=json,
790
+ params=params,
791
+ headers=headers,
792
+ cookies=cookies,
793
+ timeout=timeout,
794
+ extensions=extensions,
795
+ )
796
+
797
+ s = PlexAPI(async_client=CustomClient(httpx.AsyncClient()))
798
+ ```
799
+ <!-- End Custom HTTP Client [http-client] -->
800
+
801
+ <!-- Start Authentication [security] -->
802
+ ## Authentication
803
+
804
+ ### Per-Client Security Schemes
805
+
806
+ This SDK supports the following security scheme globally:
807
+
808
+ | Name | Type | Scheme |
809
+ | -------------- | ------ | ------- |
810
+ | `access_token` | apiKey | API key |
811
+
812
+ To authenticate with the API the `access_token` parameter must be set when initializing the SDK client instance. For example:
813
+ ```python
814
+ from plex_api_client import PlexAPI
815
+
816
+
817
+ with PlexAPI(
818
+ access_token="<YOUR_API_KEY_HERE>",
819
+ ) as plex_api:
820
+
821
+ res = plex_api.server.get_server_capabilities()
822
+
823
+ assert res.object is not None
824
+
825
+ # Handle response
826
+ print(res.object)
827
+
828
+ ```
829
+ <!-- End Authentication [security] -->
830
+
831
+ <!-- Start Resource Management [resource-management] -->
832
+ ## Resource Management
833
+
834
+ The `PlexAPI` class implements the context manager protocol and registers a finalizer function to close the underlying sync and async HTTPX clients it uses under the hood. This will close HTTP connections, release memory and free up other resources held by the SDK. In short-lived Python programs and notebooks that make a few SDK method calls, resource management may not be a concern. However, in longer-lived programs, it is beneficial to create a single SDK instance via a [context manager][context-manager] and reuse it across the application.
835
+
836
+ [context-manager]: https://docs.python.org/3/reference/datamodel.html#context-managers
837
+
838
+ ```python
839
+ from plex_api_client import PlexAPI
840
+ def main():
841
+
842
+ with PlexAPI(
843
+ access_token="<YOUR_API_KEY_HERE>",
844
+ ) as plex_api:
845
+ # Rest of application here...
846
+
847
+
848
+ # Or when using async:
849
+ async def amain():
850
+
851
+ async with PlexAPI(
852
+ access_token="<YOUR_API_KEY_HERE>",
853
+ ) as plex_api:
854
+ # Rest of application here...
855
+ ```
856
+ <!-- End Resource Management [resource-management] -->
857
+
858
+ <!-- Start Debugging [debug] -->
859
+ ## Debugging
860
+
861
+ You can setup your SDK to emit debug logs for SDK requests and responses.
862
+
863
+ You can pass your own logger class directly into your SDK.
864
+ ```python
865
+ from plex_api_client import PlexAPI
866
+ import logging
867
+
868
+ logging.basicConfig(level=logging.DEBUG)
869
+ s = PlexAPI(debug_logger=logging.getLogger("plex_api_client"))
870
+ ```
871
+ <!-- End Debugging [debug] -->
872
+
873
+ <!-- Placeholder for Future Speakeasy SDK Sections -->
874
+
875
+ # Development
876
+
877
+ ## Maturity
878
+
879
+ This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage
880
+ to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally
881
+ looking for the latest version.
882
+
883
+ ## Contributions
884
+
885
+ While we value open-source contributions to this SDK, this library is generated programmatically.
886
+ Feel free to open a PR or a Github issue as a proof of concept and we'll do our best to include it in a future release!
887
+
888
+ ### SDK Created by [Speakeasy](https://docs.speakeasyapi.dev/docs/using-speakeasy/client-sdks)
889
+