Compare commits

...

3 Commits

Author SHA1 Message Date
speakeasybot
2b03eae316 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.390.7 2024-09-06 00:00:16 +00:00
Luke Hagar
e2d3ad2f38 Merge pull request #3 from JasonLandbridge/patch-1 2024-09-05 14:59:12 -05:00
Jason Landbridge
5d60461459 Update workflow.yaml 2024-09-05 15:05:52 +02:00
226 changed files with 3355 additions and 1126 deletions

View File

@@ -1,12 +1,12 @@
lockVersion: 2.0.0 lockVersion: 2.0.0
id: 5a8dbcbc-e0ee-41f0-9d84-b8b50567d1e9 id: 5a8dbcbc-e0ee-41f0-9d84-b8b50567d1e9
management: management:
docChecksum: cd46763b91ada69afbe49fa20517839a docChecksum: f627107f2ac6c53325be4f291ae2dea7
docVersion: 0.0.3 docVersion: 0.0.3
speakeasyVersion: 1.383.2 speakeasyVersion: 1.390.7
generationVersion: 2.407.0 generationVersion: 2.409.8
releaseVersion: 0.4.2 releaseVersion: 0.5.0
configChecksum: 74b77ec64d814262085e1afc1ea50fbb configChecksum: 4bb12ec49dacd5ee7587cdd901280ff9
repoURL: https://github.com/LukeHagar/plexcsharp.git repoURL: https://github.com/LukeHagar/plexcsharp.git
repoSubDirectory: . repoSubDirectory: .
published: true published: true
@@ -28,7 +28,6 @@ features:
nullables: 0.1.0 nullables: 0.1.0
responseFormat: 0.0.4 responseFormat: 0.0.4
sdkHooks: 0.1.0 sdkHooks: 0.1.0
typeOverrides: 2.81.1
unions: 0.2.1 unions: 0.2.1
generatedFiles: generatedFiles:
- PlexAPI/Server.cs - PlexAPI/Server.cs
@@ -40,13 +39,13 @@ generatedFiles:
- PlexAPI/Hubs.cs - PlexAPI/Hubs.cs
- PlexAPI/Search.cs - PlexAPI/Search.cs
- PlexAPI/Library.cs - PlexAPI/Library.cs
- PlexAPI/Watchlist.cs
- PlexAPI/Log.cs - PlexAPI/Log.cs
- PlexAPI/Playlists.cs - PlexAPI/Playlists.cs
- PlexAPI/Authentication.cs - PlexAPI/Authentication.cs
- PlexAPI/Statistics.cs - PlexAPI/Statistics.cs
- PlexAPI/Sessions.cs - PlexAPI/Sessions.cs
- PlexAPI/Updater.cs - PlexAPI/Updater.cs
- PlexAPI/Watchlist.cs
- PlexAPI/PlexAPISDK.cs - PlexAPI/PlexAPISDK.cs
- global.json - global.json
- PlexAPI.sln - PlexAPI.sln
@@ -95,6 +94,14 @@ generatedFiles:
- PlexAPI/Models/Requests/Upscale.cs - PlexAPI/Models/Requests/Upscale.cs
- PlexAPI/Models/Requests/GetResizedPhotoRequest.cs - PlexAPI/Models/Requests/GetResizedPhotoRequest.cs
- PlexAPI/Models/Requests/GetResizedPhotoResponse.cs - PlexAPI/Models/Requests/GetResizedPhotoResponse.cs
- PlexAPI/Models/Requests/GetMediaProvidersRequest.cs
- PlexAPI/Models/Requests/Pivot.cs
- PlexAPI/Models/Requests/GetMediaProvidersDirectory.cs
- PlexAPI/Models/Requests/Feature.cs
- PlexAPI/Models/Requests/MediaProvider.cs
- PlexAPI/Models/Requests/GetMediaProvidersMediaContainer.cs
- PlexAPI/Models/Requests/GetMediaProvidersResponseBody.cs
- PlexAPI/Models/Requests/GetMediaProvidersResponse.cs
- PlexAPI/Models/Requests/GetServerListServer.cs - PlexAPI/Models/Requests/GetServerListServer.cs
- PlexAPI/Models/Requests/GetServerListMediaContainer.cs - PlexAPI/Models/Requests/GetServerListMediaContainer.cs
- PlexAPI/Models/Requests/GetServerListResponseBody.cs - PlexAPI/Models/Requests/GetServerListResponseBody.cs
@@ -105,6 +112,10 @@ generatedFiles:
- PlexAPI/Models/Requests/MarkUnplayedResponse.cs - PlexAPI/Models/Requests/MarkUnplayedResponse.cs
- PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs - PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs
- PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs - PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs
- PlexAPI/Models/Requests/GetBannerImageRequest.cs
- PlexAPI/Models/Requests/GetBannerImageResponse.cs
- PlexAPI/Models/Requests/GetThumbImageRequest.cs
- PlexAPI/Models/Requests/GetThumbImageResponse.cs
- PlexAPI/Models/Requests/State.cs - PlexAPI/Models/Requests/State.cs
- PlexAPI/Models/Requests/GetTimelineRequest.cs - PlexAPI/Models/Requests/GetTimelineRequest.cs
- PlexAPI/Models/Requests/GetTimelineResponse.cs - PlexAPI/Models/Requests/GetTimelineResponse.cs
@@ -143,10 +154,10 @@ generatedFiles:
- PlexAPI/Models/Requests/IncludeHttps.cs - PlexAPI/Models/Requests/IncludeHttps.cs
- PlexAPI/Models/Requests/IncludeRelay.cs - PlexAPI/Models/Requests/IncludeRelay.cs
- PlexAPI/Models/Requests/IncludeIPv6.cs - PlexAPI/Models/Requests/IncludeIPv6.cs
- PlexAPI/Models/Requests/GetResourcesRequest.cs - PlexAPI/Models/Requests/GetServerResourcesRequest.cs
- PlexAPI/Models/Requests/Connections.cs - PlexAPI/Models/Requests/Connections.cs
- PlexAPI/Models/Requests/PlexDevice.cs - PlexAPI/Models/Requests/PlexDevice.cs
- PlexAPI/Models/Requests/GetResourcesResponse.cs - PlexAPI/Models/Requests/GetServerResourcesResponse.cs
- PlexAPI/Models/Requests/GetPinRequest.cs - PlexAPI/Models/Requests/GetPinRequest.cs
- PlexAPI/Models/Requests/GeoData.cs - PlexAPI/Models/Requests/GeoData.cs
- PlexAPI/Models/Requests/GetPinAuthPinContainer.cs - PlexAPI/Models/Requests/GetPinAuthPinContainer.cs
@@ -155,23 +166,6 @@ generatedFiles:
- PlexAPI/Models/Requests/GetTokenByPinIdGeoData.cs - PlexAPI/Models/Requests/GetTokenByPinIdGeoData.cs
- PlexAPI/Models/Requests/GetTokenByPinIdAuthPinContainer.cs - PlexAPI/Models/Requests/GetTokenByPinIdAuthPinContainer.cs
- PlexAPI/Models/Requests/GetTokenByPinIdResponse.cs - PlexAPI/Models/Requests/GetTokenByPinIdResponse.cs
- PlexAPI/Models/Requests/MailingListStatus.cs
- PlexAPI/Models/Requests/AutoSelectSubtitle.cs
- PlexAPI/Models/Requests/DefaultSubtitleAccessibility.cs
- PlexAPI/Models/Requests/DefaultSubtitleForced.cs
- PlexAPI/Models/Requests/WatchedIndicator.cs
- PlexAPI/Models/Requests/MediaReviewsVisibility.cs
- PlexAPI/Models/Requests/UserProfile.cs
- PlexAPI/Models/Requests/GetUserDetailsStatus.cs
- PlexAPI/Models/Requests/Services.cs
- PlexAPI/Models/Requests/Features.cs
- PlexAPI/Models/Requests/GetUserDetailsPlexStatus.cs
- PlexAPI/Models/Requests/Subscription.cs
- PlexAPI/Models/Requests/GetUserDetailsFeatures.cs
- PlexAPI/Models/Requests/GetUserDetailsPlexResponseStatus.cs
- PlexAPI/Models/Requests/GetUserDetailsSubscription.cs
- PlexAPI/Models/Requests/GetUserDetailsUserPlexAccount.cs
- PlexAPI/Models/Requests/GetUserDetailsResponse.cs
- PlexAPI/Models/Requests/OnlyTransient.cs - PlexAPI/Models/Requests/OnlyTransient.cs
- PlexAPI/Models/Requests/GetGlobalHubsRequest.cs - PlexAPI/Models/Requests/GetGlobalHubsRequest.cs
- PlexAPI/Models/Requests/GetGlobalHubsMetadata.cs - PlexAPI/Models/Requests/GetGlobalHubsMetadata.cs
@@ -212,6 +206,7 @@ generatedFiles:
- PlexAPI/Models/Requests/GetSearchResultsResponse.cs - PlexAPI/Models/Requests/GetSearchResultsResponse.cs
- PlexAPI/Models/Requests/GetFileHashRequest.cs - PlexAPI/Models/Requests/GetFileHashRequest.cs
- PlexAPI/Models/Requests/GetFileHashResponse.cs - PlexAPI/Models/Requests/GetFileHashResponse.cs
- PlexAPI/Models/Requests/GetRecentlyAddedRequest.cs
- PlexAPI/Models/Requests/Part.cs - PlexAPI/Models/Requests/Part.cs
- PlexAPI/Models/Requests/Media.cs - PlexAPI/Models/Requests/Media.cs
- PlexAPI/Models/Requests/Genre.cs - PlexAPI/Models/Requests/Genre.cs
@@ -243,6 +238,9 @@ generatedFiles:
- PlexAPI/Models/Requests/DeleteLibraryRequest.cs - PlexAPI/Models/Requests/DeleteLibraryRequest.cs
- PlexAPI/Models/Requests/DeleteLibraryResponse.cs - PlexAPI/Models/Requests/DeleteLibraryResponse.cs
- PlexAPI/Models/Requests/Tag.cs - PlexAPI/Models/Requests/Tag.cs
- PlexAPI/Models/Requests/IncludeGuids.cs
- PlexAPI/Models/Requests/IncludeMeta.cs
- PlexAPI/Models/Requests/Type.cs
- PlexAPI/Models/Requests/GetLibraryItemsRequest.cs - PlexAPI/Models/Requests/GetLibraryItemsRequest.cs
- PlexAPI/Models/Requests/LibrarySectionID.cs - PlexAPI/Models/Requests/LibrarySectionID.cs
- PlexAPI/Models/Requests/GetLibraryItemsPart.cs - PlexAPI/Models/Requests/GetLibraryItemsPart.cs
@@ -259,34 +257,35 @@ generatedFiles:
- PlexAPI/Models/Requests/Force.cs - PlexAPI/Models/Requests/Force.cs
- PlexAPI/Models/Requests/GetRefreshLibraryMetadataRequest.cs - PlexAPI/Models/Requests/GetRefreshLibraryMetadataRequest.cs
- PlexAPI/Models/Requests/GetRefreshLibraryMetadataResponse.cs - PlexAPI/Models/Requests/GetRefreshLibraryMetadataResponse.cs
- PlexAPI/Models/Requests/Type.cs - PlexAPI/Models/Requests/QueryParamType.cs
- PlexAPI/Models/Requests/SearchLibraryRequest.cs - PlexAPI/Models/Requests/GetSearchLibraryRequest.cs
- PlexAPI/Models/Requests/SearchLibraryMetadata.cs - PlexAPI/Models/Requests/GetSearchLibraryMetadata.cs
- PlexAPI/Models/Requests/SearchLibraryMediaContainer.cs - PlexAPI/Models/Requests/GetSearchLibraryMediaContainer.cs
- PlexAPI/Models/Requests/SearchLibraryResponseBody.cs - PlexAPI/Models/Requests/GetSearchLibraryResponseBody.cs
- PlexAPI/Models/Requests/SearchLibraryResponse.cs - PlexAPI/Models/Requests/GetSearchLibraryResponse.cs
- PlexAPI/Models/Requests/GetMetadataRequest.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyRequest.cs
- PlexAPI/Models/Requests/Stream.cs - PlexAPI/Models/Requests/Stream.cs
- PlexAPI/Models/Requests/GetMetadataPart.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyPart.cs
- PlexAPI/Models/Requests/GetMetadataMedia.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyMedia.cs
- PlexAPI/Models/Requests/GetMetadataGenre.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyGenre.cs
- PlexAPI/Models/Requests/GetMetadataCountry.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyCountry.cs
- PlexAPI/Models/Requests/Guids.cs - PlexAPI/Models/Requests/Guids.cs
- PlexAPI/Models/Requests/Ratings.cs - PlexAPI/Models/Requests/Ratings.cs
- PlexAPI/Models/Requests/GetMetadataDirector.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyDirector.cs
- PlexAPI/Models/Requests/GetMetadataWriter.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyWriter.cs
- PlexAPI/Models/Requests/GetMetadataRole.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyRole.cs
- PlexAPI/Models/Requests/Producer.cs - PlexAPI/Models/Requests/Producer.cs
- PlexAPI/Models/Requests/GetMetadataMetadata.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyMetadata.cs
- PlexAPI/Models/Requests/GetMetadataMediaContainer.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyMediaContainer.cs
- PlexAPI/Models/Requests/GetMetadataResponseBody.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyResponseBody.cs
- PlexAPI/Models/Requests/GetMetadataResponse.cs - PlexAPI/Models/Requests/GetMetaDataByRatingKeyResponse.cs
- PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs - PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs
- PlexAPI/Models/Requests/GetMetadataChildrenDirectory.cs - PlexAPI/Models/Requests/GetMetadataChildrenDirectory.cs
- PlexAPI/Models/Requests/GetMetadataChildrenMetadata.cs - PlexAPI/Models/Requests/GetMetadataChildrenMetadata.cs
- PlexAPI/Models/Requests/GetMetadataChildrenMediaContainer.cs - PlexAPI/Models/Requests/GetMetadataChildrenMediaContainer.cs
- PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs - PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs
- PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs - PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs
- PlexAPI/Models/Requests/GetTopWatchedContentQueryParamType.cs
- PlexAPI/Models/Requests/GetTopWatchedContentRequest.cs - PlexAPI/Models/Requests/GetTopWatchedContentRequest.cs
- PlexAPI/Models/Requests/GetTopWatchedContentGenre.cs - PlexAPI/Models/Requests/GetTopWatchedContentGenre.cs
- PlexAPI/Models/Requests/GetTopWatchedContentCountry.cs - PlexAPI/Models/Requests/GetTopWatchedContentCountry.cs
@@ -305,12 +304,21 @@ generatedFiles:
- PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs - PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs
- PlexAPI/Models/Requests/GetOnDeckResponseBody.cs - PlexAPI/Models/Requests/GetOnDeckResponseBody.cs
- PlexAPI/Models/Requests/GetOnDeckResponse.cs - PlexAPI/Models/Requests/GetOnDeckResponse.cs
- PlexAPI/Models/Requests/Filter.cs
- PlexAPI/Models/Requests/Libtype.cs
- PlexAPI/Models/Requests/IncludeCollections.cs
- PlexAPI/Models/Requests/IncludeExternalMedia.cs
- PlexAPI/Models/Requests/GetWatchListRequest.cs
- PlexAPI/Models/Requests/Image.cs
- PlexAPI/Models/Requests/Metadata.cs
- PlexAPI/Models/Requests/GetWatchListResponseBody.cs
- PlexAPI/Models/Requests/GetWatchListResponse.cs
- PlexAPI/Models/Requests/Level.cs - PlexAPI/Models/Requests/Level.cs
- PlexAPI/Models/Requests/LogLineRequest.cs - PlexAPI/Models/Requests/LogLineRequest.cs
- PlexAPI/Models/Requests/LogLineResponse.cs - PlexAPI/Models/Requests/LogLineResponse.cs
- PlexAPI/Models/Requests/LogMultiLineResponse.cs - PlexAPI/Models/Requests/LogMultiLineResponse.cs
- PlexAPI/Models/Requests/EnablePaperTrailResponse.cs - PlexAPI/Models/Requests/EnablePaperTrailResponse.cs
- PlexAPI/Models/Requests/QueryParamType.cs - PlexAPI/Models/Requests/CreatePlaylistQueryParamType.cs
- PlexAPI/Models/Requests/Smart.cs - PlexAPI/Models/Requests/Smart.cs
- PlexAPI/Models/Requests/CreatePlaylistRequest.cs - PlexAPI/Models/Requests/CreatePlaylistRequest.cs
- PlexAPI/Models/Requests/CreatePlaylistMetadata.cs - PlexAPI/Models/Requests/CreatePlaylistMetadata.cs
@@ -333,6 +341,7 @@ generatedFiles:
- PlexAPI/Models/Requests/DeletePlaylistResponse.cs - PlexAPI/Models/Requests/DeletePlaylistResponse.cs
- PlexAPI/Models/Requests/UpdatePlaylistRequest.cs - PlexAPI/Models/Requests/UpdatePlaylistRequest.cs
- PlexAPI/Models/Requests/UpdatePlaylistResponse.cs - PlexAPI/Models/Requests/UpdatePlaylistResponse.cs
- PlexAPI/Models/Requests/GetPlaylistContentsQueryParamType.cs
- PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs - PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs
- PlexAPI/Models/Requests/GetPlaylistContentsPart.cs - PlexAPI/Models/Requests/GetPlaylistContentsPart.cs
- PlexAPI/Models/Requests/GetPlaylistContentsMedia.cs - PlexAPI/Models/Requests/GetPlaylistContentsMedia.cs
@@ -361,6 +370,24 @@ generatedFiles:
- PlexAPI/Models/Requests/GetTransientTokenResponse.cs - PlexAPI/Models/Requests/GetTransientTokenResponse.cs
- PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs - PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs
- PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs - PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs
- PlexAPI/Models/Requests/GetUserDetailsRequest.cs
- PlexAPI/Models/Requests/MailingListStatus.cs
- PlexAPI/Models/Requests/AutoSelectSubtitle.cs
- PlexAPI/Models/Requests/DefaultSubtitleAccessibility.cs
- PlexAPI/Models/Requests/DefaultSubtitleForced.cs
- PlexAPI/Models/Requests/WatchedIndicator.cs
- PlexAPI/Models/Requests/MediaReviewsVisibility.cs
- PlexAPI/Models/Requests/UserProfile.cs
- PlexAPI/Models/Requests/GetUserDetailsStatus.cs
- PlexAPI/Models/Requests/Services.cs
- PlexAPI/Models/Requests/Features.cs
- PlexAPI/Models/Requests/GetUserDetailsAuthenticationStatus.cs
- PlexAPI/Models/Requests/Subscription.cs
- PlexAPI/Models/Requests/GetUserDetailsFeatures.cs
- PlexAPI/Models/Requests/GetUserDetailsAuthenticationResponseStatus.cs
- PlexAPI/Models/Requests/GetUserDetailsSubscription.cs
- PlexAPI/Models/Requests/GetUserDetailsUserPlexAccount.cs
- PlexAPI/Models/Requests/GetUserDetailsResponse.cs
- PlexAPI/Models/Requests/PostUsersSignInDataRequestBody.cs - PlexAPI/Models/Requests/PostUsersSignInDataRequestBody.cs
- PlexAPI/Models/Requests/PostUsersSignInDataRequest.cs - PlexAPI/Models/Requests/PostUsersSignInDataRequest.cs
- PlexAPI/Models/Requests/PostUsersSignInDataMailingListStatus.cs - PlexAPI/Models/Requests/PostUsersSignInDataMailingListStatus.cs
@@ -414,7 +441,7 @@ generatedFiles:
- PlexAPI/Models/Requests/GetSessionsMediaContainer.cs - PlexAPI/Models/Requests/GetSessionsMediaContainer.cs
- PlexAPI/Models/Requests/GetSessionsResponseBody.cs - PlexAPI/Models/Requests/GetSessionsResponseBody.cs
- PlexAPI/Models/Requests/GetSessionsResponse.cs - PlexAPI/Models/Requests/GetSessionsResponse.cs
- PlexAPI/Models/Requests/Filter.cs - PlexAPI/Models/Requests/QueryParamFilter.cs
- PlexAPI/Models/Requests/GetSessionHistoryRequest.cs - PlexAPI/Models/Requests/GetSessionHistoryRequest.cs
- PlexAPI/Models/Requests/GetSessionHistoryMetadata.cs - PlexAPI/Models/Requests/GetSessionHistoryMetadata.cs
- PlexAPI/Models/Requests/GetSessionHistoryMediaContainer.cs - PlexAPI/Models/Requests/GetSessionHistoryMediaContainer.cs
@@ -437,15 +464,6 @@ generatedFiles:
- PlexAPI/Models/Requests/Skip.cs - PlexAPI/Models/Requests/Skip.cs
- PlexAPI/Models/Requests/ApplyUpdatesRequest.cs - PlexAPI/Models/Requests/ApplyUpdatesRequest.cs
- PlexAPI/Models/Requests/ApplyUpdatesResponse.cs - PlexAPI/Models/Requests/ApplyUpdatesResponse.cs
- PlexAPI/Models/Requests/PathParamFilter.cs
- PlexAPI/Models/Requests/Libtype.cs
- PlexAPI/Models/Requests/IncludeCollections.cs
- PlexAPI/Models/Requests/IncludeExternalMedia.cs
- PlexAPI/Models/Requests/GetWatchlistRequest.cs
- PlexAPI/Models/Requests/Image.cs
- PlexAPI/Models/Requests/Metadata.cs
- PlexAPI/Models/Requests/GetWatchlistResponseBody.cs
- PlexAPI/Models/Requests/GetWatchlistResponse.cs
- PlexAPI/Models/Errors/Errors.cs - PlexAPI/Models/Errors/Errors.cs
- PlexAPI/Models/Errors/GetServerCapabilitiesResponseBody.cs - PlexAPI/Models/Errors/GetServerCapabilitiesResponseBody.cs
- PlexAPI/Models/Errors/GetServerPreferencesErrors.cs - PlexAPI/Models/Errors/GetServerPreferencesErrors.cs
@@ -454,12 +472,13 @@ generatedFiles:
- PlexAPI/Models/Errors/GetAvailableClientsResponseBody.cs - PlexAPI/Models/Errors/GetAvailableClientsResponseBody.cs
- PlexAPI/Models/Errors/GetDevicesErrors.cs - PlexAPI/Models/Errors/GetDevicesErrors.cs
- PlexAPI/Models/Errors/GetDevicesResponseBody.cs - PlexAPI/Models/Errors/GetDevicesResponseBody.cs
- PlexAPI/Models/Errors/GetServerIdentityErrors.cs
- PlexAPI/Models/Errors/GetServerIdentityResponseBody.cs - PlexAPI/Models/Errors/GetServerIdentityResponseBody.cs
- PlexAPI/Models/Errors/GetMyPlexAccountErrors.cs - PlexAPI/Models/Errors/GetMyPlexAccountErrors.cs
- PlexAPI/Models/Errors/GetMyPlexAccountResponseBody.cs - PlexAPI/Models/Errors/GetMyPlexAccountResponseBody.cs
- PlexAPI/Models/Errors/GetResizedPhotoErrors.cs - PlexAPI/Models/Errors/GetResizedPhotoErrors.cs
- PlexAPI/Models/Errors/GetResizedPhotoResponseBody.cs - PlexAPI/Models/Errors/GetResizedPhotoResponseBody.cs
- PlexAPI/Models/Errors/GetMediaProvidersErrors.cs
- PlexAPI/Models/Errors/GetMediaProvidersResponseBody.cs
- PlexAPI/Models/Errors/GetServerListErrors.cs - PlexAPI/Models/Errors/GetServerListErrors.cs
- PlexAPI/Models/Errors/GetServerListResponseBody.cs - PlexAPI/Models/Errors/GetServerListResponseBody.cs
- PlexAPI/Models/Errors/MarkPlayedErrors.cs - PlexAPI/Models/Errors/MarkPlayedErrors.cs
@@ -468,6 +487,10 @@ generatedFiles:
- PlexAPI/Models/Errors/MarkUnplayedResponseBody.cs - PlexAPI/Models/Errors/MarkUnplayedResponseBody.cs
- PlexAPI/Models/Errors/UpdatePlayProgressErrors.cs - PlexAPI/Models/Errors/UpdatePlayProgressErrors.cs
- PlexAPI/Models/Errors/UpdatePlayProgressResponseBody.cs - PlexAPI/Models/Errors/UpdatePlayProgressResponseBody.cs
- PlexAPI/Models/Errors/GetBannerImageErrors.cs
- PlexAPI/Models/Errors/GetBannerImageResponseBody.cs
- PlexAPI/Models/Errors/GetThumbImageErrors.cs
- PlexAPI/Models/Errors/GetThumbImageResponseBody.cs
- PlexAPI/Models/Errors/GetTimelineErrors.cs - PlexAPI/Models/Errors/GetTimelineErrors.cs
- PlexAPI/Models/Errors/GetTimelineResponseBody.cs - PlexAPI/Models/Errors/GetTimelineResponseBody.cs
- PlexAPI/Models/Errors/StartUniversalTranscodeErrors.cs - PlexAPI/Models/Errors/StartUniversalTranscodeErrors.cs
@@ -494,14 +517,14 @@ generatedFiles:
- PlexAPI/Models/Errors/GetGeoDataResponseBody.cs - PlexAPI/Models/Errors/GetGeoDataResponseBody.cs
- PlexAPI/Models/Errors/GetHomeDataErrors.cs - PlexAPI/Models/Errors/GetHomeDataErrors.cs
- PlexAPI/Models/Errors/GetHomeDataResponseBody.cs - PlexAPI/Models/Errors/GetHomeDataResponseBody.cs
- PlexAPI/Models/Errors/GetResourcesErrors.cs - PlexAPI/Models/Errors/GetServerResourcesErrors.cs
- PlexAPI/Models/Errors/GetResourcesResponseBody.cs - PlexAPI/Models/Errors/GetServerResourcesResponseBody.cs
- PlexAPI/Models/Errors/GetPinErrors.cs - PlexAPI/Models/Errors/GetPinErrors.cs
- PlexAPI/Models/Errors/GetPinResponseBody.cs - PlexAPI/Models/Errors/GetPinResponseBody.cs
- PlexAPI/Models/Errors/GetTokenByPinIdPlexErrors.cs
- PlexAPI/Models/Errors/GetTokenByPinIdPlexResponseBody.cs
- PlexAPI/Models/Errors/GetTokenByPinIdErrors.cs - PlexAPI/Models/Errors/GetTokenByPinIdErrors.cs
- PlexAPI/Models/Errors/GetTokenByPinIdResponseBody.cs - PlexAPI/Models/Errors/GetTokenByPinIdResponseBody.cs
- PlexAPI/Models/Errors/GetUserDetailsErrors.cs
- PlexAPI/Models/Errors/GetUserDetailsResponseBody.cs
- PlexAPI/Models/Errors/GetGlobalHubsErrors.cs - PlexAPI/Models/Errors/GetGlobalHubsErrors.cs
- PlexAPI/Models/Errors/GetGlobalHubsResponseBody.cs - PlexAPI/Models/Errors/GetGlobalHubsResponseBody.cs
- PlexAPI/Models/Errors/GetLibraryHubsErrors.cs - PlexAPI/Models/Errors/GetLibraryHubsErrors.cs
@@ -526,14 +549,18 @@ generatedFiles:
- PlexAPI/Models/Errors/GetLibraryItemsResponseBody.cs - PlexAPI/Models/Errors/GetLibraryItemsResponseBody.cs
- PlexAPI/Models/Errors/GetRefreshLibraryMetadataErrors.cs - PlexAPI/Models/Errors/GetRefreshLibraryMetadataErrors.cs
- PlexAPI/Models/Errors/GetRefreshLibraryMetadataResponseBody.cs - PlexAPI/Models/Errors/GetRefreshLibraryMetadataResponseBody.cs
- PlexAPI/Models/Errors/SearchLibraryErrors.cs - PlexAPI/Models/Errors/GetSearchLibraryErrors.cs
- PlexAPI/Models/Errors/SearchLibraryResponseBody.cs - PlexAPI/Models/Errors/GetSearchLibraryResponseBody.cs
- PlexAPI/Models/Errors/GetMetadataErrors.cs - PlexAPI/Models/Errors/GetMetaDataByRatingKeyErrors.cs
- PlexAPI/Models/Errors/GetMetadataResponseBody.cs - PlexAPI/Models/Errors/GetMetaDataByRatingKeyResponseBody.cs
- PlexAPI/Models/Errors/GetMetadataChildrenErrors.cs - PlexAPI/Models/Errors/GetMetadataChildrenErrors.cs
- PlexAPI/Models/Errors/GetMetadataChildrenResponseBody.cs - PlexAPI/Models/Errors/GetMetadataChildrenResponseBody.cs
- PlexAPI/Models/Errors/GetTopWatchedContentErrors.cs
- PlexAPI/Models/Errors/GetTopWatchedContentResponseBody.cs
- PlexAPI/Models/Errors/GetOnDeckErrors.cs - PlexAPI/Models/Errors/GetOnDeckErrors.cs
- PlexAPI/Models/Errors/GetOnDeckResponseBody.cs - PlexAPI/Models/Errors/GetOnDeckResponseBody.cs
- PlexAPI/Models/Errors/GetWatchListErrors.cs
- PlexAPI/Models/Errors/GetWatchListResponseBody.cs
- PlexAPI/Models/Errors/LogLineErrors.cs - PlexAPI/Models/Errors/LogLineErrors.cs
- PlexAPI/Models/Errors/LogLineResponseBody.cs - PlexAPI/Models/Errors/LogLineResponseBody.cs
- PlexAPI/Models/Errors/LogMultiLineErrors.cs - PlexAPI/Models/Errors/LogMultiLineErrors.cs
@@ -562,6 +589,8 @@ generatedFiles:
- PlexAPI/Models/Errors/GetTransientTokenResponseBody.cs - PlexAPI/Models/Errors/GetTransientTokenResponseBody.cs
- PlexAPI/Models/Errors/GetSourceConnectionInformationErrors.cs - PlexAPI/Models/Errors/GetSourceConnectionInformationErrors.cs
- PlexAPI/Models/Errors/GetSourceConnectionInformationResponseBody.cs - PlexAPI/Models/Errors/GetSourceConnectionInformationResponseBody.cs
- PlexAPI/Models/Errors/GetUserDetailsErrors.cs
- PlexAPI/Models/Errors/GetUserDetailsResponseBody.cs
- PlexAPI/Models/Errors/PostUsersSignInDataErrors.cs - PlexAPI/Models/Errors/PostUsersSignInDataErrors.cs
- PlexAPI/Models/Errors/PostUsersSignInDataResponseBody.cs - PlexAPI/Models/Errors/PostUsersSignInDataResponseBody.cs
- PlexAPI/Models/Errors/GetStatisticsErrors.cs - PlexAPI/Models/Errors/GetStatisticsErrors.cs
@@ -584,8 +613,6 @@ generatedFiles:
- PlexAPI/Models/Errors/CheckForUpdatesResponseBody.cs - PlexAPI/Models/Errors/CheckForUpdatesResponseBody.cs
- PlexAPI/Models/Errors/ApplyUpdatesErrors.cs - PlexAPI/Models/Errors/ApplyUpdatesErrors.cs
- PlexAPI/Models/Errors/ApplyUpdatesResponseBody.cs - PlexAPI/Models/Errors/ApplyUpdatesResponseBody.cs
- PlexAPI/Models/Errors/GetWatchlistErrors.cs
- PlexAPI/Models/Errors/GetWatchlistResponseBody.cs
- PlexAPI/Models/Components/Security.cs - PlexAPI/Models/Components/Security.cs
- docs/Models/Requests/Directory.md - docs/Models/Requests/Directory.md
- docs/Models/Requests/MediaContainer.md - docs/Models/Requests/MediaContainer.md
@@ -613,6 +640,14 @@ generatedFiles:
- docs/Models/Requests/Upscale.md - docs/Models/Requests/Upscale.md
- docs/Models/Requests/GetResizedPhotoRequest.md - docs/Models/Requests/GetResizedPhotoRequest.md
- docs/Models/Requests/GetResizedPhotoResponse.md - docs/Models/Requests/GetResizedPhotoResponse.md
- docs/Models/Requests/GetMediaProvidersRequest.md
- docs/Models/Requests/Pivot.md
- docs/Models/Requests/GetMediaProvidersDirectory.md
- docs/Models/Requests/Feature.md
- docs/Models/Requests/MediaProvider.md
- docs/Models/Requests/GetMediaProvidersMediaContainer.md
- docs/Models/Requests/GetMediaProvidersResponseBody.md
- docs/Models/Requests/GetMediaProvidersResponse.md
- docs/Models/Requests/GetServerListServer.md - docs/Models/Requests/GetServerListServer.md
- docs/Models/Requests/GetServerListMediaContainer.md - docs/Models/Requests/GetServerListMediaContainer.md
- docs/Models/Requests/GetServerListResponseBody.md - docs/Models/Requests/GetServerListResponseBody.md
@@ -623,6 +658,10 @@ generatedFiles:
- docs/Models/Requests/MarkUnplayedResponse.md - docs/Models/Requests/MarkUnplayedResponse.md
- docs/Models/Requests/UpdatePlayProgressRequest.md - docs/Models/Requests/UpdatePlayProgressRequest.md
- docs/Models/Requests/UpdatePlayProgressResponse.md - docs/Models/Requests/UpdatePlayProgressResponse.md
- docs/Models/Requests/GetBannerImageRequest.md
- docs/Models/Requests/GetBannerImageResponse.md
- docs/Models/Requests/GetThumbImageRequest.md
- docs/Models/Requests/GetThumbImageResponse.md
- docs/Models/Requests/State.md - docs/Models/Requests/State.md
- docs/Models/Requests/GetTimelineRequest.md - docs/Models/Requests/GetTimelineRequest.md
- docs/Models/Requests/GetTimelineResponse.md - docs/Models/Requests/GetTimelineResponse.md
@@ -661,10 +700,10 @@ generatedFiles:
- docs/Models/Requests/IncludeHttps.md - docs/Models/Requests/IncludeHttps.md
- docs/Models/Requests/IncludeRelay.md - docs/Models/Requests/IncludeRelay.md
- docs/Models/Requests/IncludeIPv6.md - docs/Models/Requests/IncludeIPv6.md
- docs/Models/Requests/GetResourcesRequest.md - docs/Models/Requests/GetServerResourcesRequest.md
- docs/Models/Requests/Connections.md - docs/Models/Requests/Connections.md
- docs/Models/Requests/PlexDevice.md - docs/Models/Requests/PlexDevice.md
- docs/Models/Requests/GetResourcesResponse.md - docs/Models/Requests/GetServerResourcesResponse.md
- docs/Models/Requests/GetPinRequest.md - docs/Models/Requests/GetPinRequest.md
- docs/Models/Requests/GeoData.md - docs/Models/Requests/GeoData.md
- docs/Models/Requests/GetPinAuthPinContainer.md - docs/Models/Requests/GetPinAuthPinContainer.md
@@ -673,23 +712,6 @@ generatedFiles:
- docs/Models/Requests/GetTokenByPinIdGeoData.md - docs/Models/Requests/GetTokenByPinIdGeoData.md
- docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md - docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md
- docs/Models/Requests/GetTokenByPinIdResponse.md - docs/Models/Requests/GetTokenByPinIdResponse.md
- docs/Models/Requests/MailingListStatus.md
- docs/Models/Requests/AutoSelectSubtitle.md
- docs/Models/Requests/DefaultSubtitleAccessibility.md
- docs/Models/Requests/DefaultSubtitleForced.md
- docs/Models/Requests/WatchedIndicator.md
- docs/Models/Requests/MediaReviewsVisibility.md
- docs/Models/Requests/UserProfile.md
- docs/Models/Requests/GetUserDetailsStatus.md
- docs/Models/Requests/Services.md
- docs/Models/Requests/Features.md
- docs/Models/Requests/GetUserDetailsPlexStatus.md
- docs/Models/Requests/Subscription.md
- docs/Models/Requests/GetUserDetailsFeatures.md
- docs/Models/Requests/GetUserDetailsPlexResponseStatus.md
- docs/Models/Requests/GetUserDetailsSubscription.md
- docs/Models/Requests/GetUserDetailsUserPlexAccount.md
- docs/Models/Requests/GetUserDetailsResponse.md
- docs/Models/Requests/OnlyTransient.md - docs/Models/Requests/OnlyTransient.md
- docs/Models/Requests/GetGlobalHubsRequest.md - docs/Models/Requests/GetGlobalHubsRequest.md
- docs/Models/Requests/GetGlobalHubsMetadata.md - docs/Models/Requests/GetGlobalHubsMetadata.md
@@ -730,6 +752,7 @@ generatedFiles:
- docs/Models/Requests/GetSearchResultsResponse.md - docs/Models/Requests/GetSearchResultsResponse.md
- docs/Models/Requests/GetFileHashRequest.md - docs/Models/Requests/GetFileHashRequest.md
- docs/Models/Requests/GetFileHashResponse.md - docs/Models/Requests/GetFileHashResponse.md
- docs/Models/Requests/GetRecentlyAddedRequest.md
- docs/Models/Requests/Part.md - docs/Models/Requests/Part.md
- docs/Models/Requests/Media.md - docs/Models/Requests/Media.md
- docs/Models/Requests/Genre.md - docs/Models/Requests/Genre.md
@@ -761,6 +784,9 @@ generatedFiles:
- docs/Models/Requests/DeleteLibraryRequest.md - docs/Models/Requests/DeleteLibraryRequest.md
- docs/Models/Requests/DeleteLibraryResponse.md - docs/Models/Requests/DeleteLibraryResponse.md
- docs/Models/Requests/Tag.md - docs/Models/Requests/Tag.md
- docs/Models/Requests/IncludeGuids.md
- docs/Models/Requests/IncludeMeta.md
- docs/Models/Requests/Type.md
- docs/Models/Requests/GetLibraryItemsRequest.md - docs/Models/Requests/GetLibraryItemsRequest.md
- docs/Models/Requests/LibrarySectionID.md - docs/Models/Requests/LibrarySectionID.md
- docs/Models/Requests/GetLibraryItemsPart.md - docs/Models/Requests/GetLibraryItemsPart.md
@@ -777,34 +803,35 @@ generatedFiles:
- docs/Models/Requests/Force.md - docs/Models/Requests/Force.md
- docs/Models/Requests/GetRefreshLibraryMetadataRequest.md - docs/Models/Requests/GetRefreshLibraryMetadataRequest.md
- docs/Models/Requests/GetRefreshLibraryMetadataResponse.md - docs/Models/Requests/GetRefreshLibraryMetadataResponse.md
- docs/Models/Requests/Type.md - docs/Models/Requests/QueryParamType.md
- docs/Models/Requests/SearchLibraryRequest.md - docs/Models/Requests/GetSearchLibraryRequest.md
- docs/Models/Requests/SearchLibraryMetadata.md - docs/Models/Requests/GetSearchLibraryMetadata.md
- docs/Models/Requests/SearchLibraryMediaContainer.md - docs/Models/Requests/GetSearchLibraryMediaContainer.md
- docs/Models/Requests/SearchLibraryResponseBody.md - docs/Models/Requests/GetSearchLibraryResponseBody.md
- docs/Models/Requests/SearchLibraryResponse.md - docs/Models/Requests/GetSearchLibraryResponse.md
- docs/Models/Requests/GetMetadataRequest.md - docs/Models/Requests/GetMetaDataByRatingKeyRequest.md
- docs/Models/Requests/Stream.md - docs/Models/Requests/Stream.md
- docs/Models/Requests/GetMetadataPart.md - docs/Models/Requests/GetMetaDataByRatingKeyPart.md
- docs/Models/Requests/GetMetadataMedia.md - docs/Models/Requests/GetMetaDataByRatingKeyMedia.md
- docs/Models/Requests/GetMetadataGenre.md - docs/Models/Requests/GetMetaDataByRatingKeyGenre.md
- docs/Models/Requests/GetMetadataCountry.md - docs/Models/Requests/GetMetaDataByRatingKeyCountry.md
- docs/Models/Requests/Guids.md - docs/Models/Requests/Guids.md
- docs/Models/Requests/Ratings.md - docs/Models/Requests/Ratings.md
- docs/Models/Requests/GetMetadataDirector.md - docs/Models/Requests/GetMetaDataByRatingKeyDirector.md
- docs/Models/Requests/GetMetadataWriter.md - docs/Models/Requests/GetMetaDataByRatingKeyWriter.md
- docs/Models/Requests/GetMetadataRole.md - docs/Models/Requests/GetMetaDataByRatingKeyRole.md
- docs/Models/Requests/Producer.md - docs/Models/Requests/Producer.md
- docs/Models/Requests/GetMetadataMetadata.md - docs/Models/Requests/GetMetaDataByRatingKeyMetadata.md
- docs/Models/Requests/GetMetadataMediaContainer.md - docs/Models/Requests/GetMetaDataByRatingKeyMediaContainer.md
- docs/Models/Requests/GetMetadataResponseBody.md - docs/Models/Requests/GetMetaDataByRatingKeyResponseBody.md
- docs/Models/Requests/GetMetadataResponse.md - docs/Models/Requests/GetMetaDataByRatingKeyResponse.md
- docs/Models/Requests/GetMetadataChildrenRequest.md - docs/Models/Requests/GetMetadataChildrenRequest.md
- docs/Models/Requests/GetMetadataChildrenDirectory.md - docs/Models/Requests/GetMetadataChildrenDirectory.md
- docs/Models/Requests/GetMetadataChildrenMetadata.md - docs/Models/Requests/GetMetadataChildrenMetadata.md
- docs/Models/Requests/GetMetadataChildrenMediaContainer.md - docs/Models/Requests/GetMetadataChildrenMediaContainer.md
- docs/Models/Requests/GetMetadataChildrenResponseBody.md - docs/Models/Requests/GetMetadataChildrenResponseBody.md
- docs/Models/Requests/GetMetadataChildrenResponse.md - docs/Models/Requests/GetMetadataChildrenResponse.md
- docs/Models/Requests/GetTopWatchedContentQueryParamType.md
- docs/Models/Requests/GetTopWatchedContentRequest.md - docs/Models/Requests/GetTopWatchedContentRequest.md
- docs/Models/Requests/GetTopWatchedContentGenre.md - docs/Models/Requests/GetTopWatchedContentGenre.md
- docs/Models/Requests/GetTopWatchedContentCountry.md - docs/Models/Requests/GetTopWatchedContentCountry.md
@@ -823,12 +850,21 @@ generatedFiles:
- docs/Models/Requests/GetOnDeckMediaContainer.md - docs/Models/Requests/GetOnDeckMediaContainer.md
- docs/Models/Requests/GetOnDeckResponseBody.md - docs/Models/Requests/GetOnDeckResponseBody.md
- docs/Models/Requests/GetOnDeckResponse.md - docs/Models/Requests/GetOnDeckResponse.md
- docs/Models/Requests/Filter.md
- docs/Models/Requests/Libtype.md
- docs/Models/Requests/IncludeCollections.md
- docs/Models/Requests/IncludeExternalMedia.md
- docs/Models/Requests/GetWatchListRequest.md
- docs/Models/Requests/Image.md
- docs/Models/Requests/Metadata.md
- docs/Models/Requests/GetWatchListResponseBody.md
- docs/Models/Requests/GetWatchListResponse.md
- docs/Models/Requests/Level.md - docs/Models/Requests/Level.md
- docs/Models/Requests/LogLineRequest.md - docs/Models/Requests/LogLineRequest.md
- docs/Models/Requests/LogLineResponse.md - docs/Models/Requests/LogLineResponse.md
- docs/Models/Requests/LogMultiLineResponse.md - docs/Models/Requests/LogMultiLineResponse.md
- docs/Models/Requests/EnablePaperTrailResponse.md - docs/Models/Requests/EnablePaperTrailResponse.md
- docs/Models/Requests/QueryParamType.md - docs/Models/Requests/CreatePlaylistQueryParamType.md
- docs/Models/Requests/Smart.md - docs/Models/Requests/Smart.md
- docs/Models/Requests/CreatePlaylistRequest.md - docs/Models/Requests/CreatePlaylistRequest.md
- docs/Models/Requests/CreatePlaylistMetadata.md - docs/Models/Requests/CreatePlaylistMetadata.md
@@ -851,6 +887,7 @@ generatedFiles:
- docs/Models/Requests/DeletePlaylistResponse.md - docs/Models/Requests/DeletePlaylistResponse.md
- docs/Models/Requests/UpdatePlaylistRequest.md - docs/Models/Requests/UpdatePlaylistRequest.md
- docs/Models/Requests/UpdatePlaylistResponse.md - docs/Models/Requests/UpdatePlaylistResponse.md
- docs/Models/Requests/GetPlaylistContentsQueryParamType.md
- docs/Models/Requests/GetPlaylistContentsRequest.md - docs/Models/Requests/GetPlaylistContentsRequest.md
- docs/Models/Requests/GetPlaylistContentsPart.md - docs/Models/Requests/GetPlaylistContentsPart.md
- docs/Models/Requests/GetPlaylistContentsMedia.md - docs/Models/Requests/GetPlaylistContentsMedia.md
@@ -879,6 +916,24 @@ generatedFiles:
- docs/Models/Requests/GetTransientTokenResponse.md - docs/Models/Requests/GetTransientTokenResponse.md
- docs/Models/Requests/GetSourceConnectionInformationRequest.md - docs/Models/Requests/GetSourceConnectionInformationRequest.md
- docs/Models/Requests/GetSourceConnectionInformationResponse.md - docs/Models/Requests/GetSourceConnectionInformationResponse.md
- docs/Models/Requests/GetUserDetailsRequest.md
- docs/Models/Requests/MailingListStatus.md
- docs/Models/Requests/AutoSelectSubtitle.md
- docs/Models/Requests/DefaultSubtitleAccessibility.md
- docs/Models/Requests/DefaultSubtitleForced.md
- docs/Models/Requests/WatchedIndicator.md
- docs/Models/Requests/MediaReviewsVisibility.md
- docs/Models/Requests/UserProfile.md
- docs/Models/Requests/GetUserDetailsStatus.md
- docs/Models/Requests/Services.md
- docs/Models/Requests/Features.md
- docs/Models/Requests/GetUserDetailsAuthenticationStatus.md
- docs/Models/Requests/Subscription.md
- docs/Models/Requests/GetUserDetailsFeatures.md
- docs/Models/Requests/GetUserDetailsAuthenticationResponseStatus.md
- docs/Models/Requests/GetUserDetailsSubscription.md
- docs/Models/Requests/GetUserDetailsUserPlexAccount.md
- docs/Models/Requests/GetUserDetailsResponse.md
- docs/Models/Requests/PostUsersSignInDataRequestBody.md - docs/Models/Requests/PostUsersSignInDataRequestBody.md
- docs/Models/Requests/PostUsersSignInDataRequest.md - docs/Models/Requests/PostUsersSignInDataRequest.md
- docs/Models/Requests/PostUsersSignInDataMailingListStatus.md - docs/Models/Requests/PostUsersSignInDataMailingListStatus.md
@@ -932,7 +987,7 @@ generatedFiles:
- docs/Models/Requests/GetSessionsMediaContainer.md - docs/Models/Requests/GetSessionsMediaContainer.md
- docs/Models/Requests/GetSessionsResponseBody.md - docs/Models/Requests/GetSessionsResponseBody.md
- docs/Models/Requests/GetSessionsResponse.md - docs/Models/Requests/GetSessionsResponse.md
- docs/Models/Requests/Filter.md - docs/Models/Requests/QueryParamFilter.md
- docs/Models/Requests/GetSessionHistoryRequest.md - docs/Models/Requests/GetSessionHistoryRequest.md
- docs/Models/Requests/GetSessionHistoryMetadata.md - docs/Models/Requests/GetSessionHistoryMetadata.md
- docs/Models/Requests/GetSessionHistoryMediaContainer.md - docs/Models/Requests/GetSessionHistoryMediaContainer.md
@@ -955,15 +1010,6 @@ generatedFiles:
- docs/Models/Requests/Skip.md - docs/Models/Requests/Skip.md
- docs/Models/Requests/ApplyUpdatesRequest.md - docs/Models/Requests/ApplyUpdatesRequest.md
- docs/Models/Requests/ApplyUpdatesResponse.md - docs/Models/Requests/ApplyUpdatesResponse.md
- docs/Models/Requests/PathParamFilter.md
- docs/Models/Requests/Libtype.md
- docs/Models/Requests/IncludeCollections.md
- docs/Models/Requests/IncludeExternalMedia.md
- docs/Models/Requests/GetWatchlistRequest.md
- docs/Models/Requests/Image.md
- docs/Models/Requests/Metadata.md
- docs/Models/Requests/GetWatchlistResponseBody.md
- docs/Models/Requests/GetWatchlistResponse.md
- docs/Models/Errors/Errors.md - docs/Models/Errors/Errors.md
- docs/Models/Errors/GetServerCapabilitiesResponseBody.md - docs/Models/Errors/GetServerCapabilitiesResponseBody.md
- docs/Models/Errors/GetServerPreferencesErrors.md - docs/Models/Errors/GetServerPreferencesErrors.md
@@ -972,12 +1018,13 @@ generatedFiles:
- docs/Models/Errors/GetAvailableClientsResponseBody.md - docs/Models/Errors/GetAvailableClientsResponseBody.md
- docs/Models/Errors/GetDevicesErrors.md - docs/Models/Errors/GetDevicesErrors.md
- docs/Models/Errors/GetDevicesResponseBody.md - docs/Models/Errors/GetDevicesResponseBody.md
- docs/Models/Errors/GetServerIdentityErrors.md
- docs/Models/Errors/GetServerIdentityResponseBody.md - docs/Models/Errors/GetServerIdentityResponseBody.md
- docs/Models/Errors/GetMyPlexAccountErrors.md - docs/Models/Errors/GetMyPlexAccountErrors.md
- docs/Models/Errors/GetMyPlexAccountResponseBody.md - docs/Models/Errors/GetMyPlexAccountResponseBody.md
- docs/Models/Errors/GetResizedPhotoErrors.md - docs/Models/Errors/GetResizedPhotoErrors.md
- docs/Models/Errors/GetResizedPhotoResponseBody.md - docs/Models/Errors/GetResizedPhotoResponseBody.md
- docs/Models/Errors/GetMediaProvidersErrors.md
- docs/Models/Errors/GetMediaProvidersResponseBody.md
- docs/Models/Errors/GetServerListErrors.md - docs/Models/Errors/GetServerListErrors.md
- docs/Models/Errors/GetServerListResponseBody.md - docs/Models/Errors/GetServerListResponseBody.md
- docs/Models/Errors/MarkPlayedErrors.md - docs/Models/Errors/MarkPlayedErrors.md
@@ -986,6 +1033,10 @@ generatedFiles:
- docs/Models/Errors/MarkUnplayedResponseBody.md - docs/Models/Errors/MarkUnplayedResponseBody.md
- docs/Models/Errors/UpdatePlayProgressErrors.md - docs/Models/Errors/UpdatePlayProgressErrors.md
- docs/Models/Errors/UpdatePlayProgressResponseBody.md - docs/Models/Errors/UpdatePlayProgressResponseBody.md
- docs/Models/Errors/GetBannerImageErrors.md
- docs/Models/Errors/GetBannerImageResponseBody.md
- docs/Models/Errors/GetThumbImageErrors.md
- docs/Models/Errors/GetThumbImageResponseBody.md
- docs/Models/Errors/GetTimelineErrors.md - docs/Models/Errors/GetTimelineErrors.md
- docs/Models/Errors/GetTimelineResponseBody.md - docs/Models/Errors/GetTimelineResponseBody.md
- docs/Models/Errors/StartUniversalTranscodeErrors.md - docs/Models/Errors/StartUniversalTranscodeErrors.md
@@ -1012,14 +1063,14 @@ generatedFiles:
- docs/Models/Errors/GetGeoDataResponseBody.md - docs/Models/Errors/GetGeoDataResponseBody.md
- docs/Models/Errors/GetHomeDataErrors.md - docs/Models/Errors/GetHomeDataErrors.md
- docs/Models/Errors/GetHomeDataResponseBody.md - docs/Models/Errors/GetHomeDataResponseBody.md
- docs/Models/Errors/GetResourcesErrors.md - docs/Models/Errors/GetServerResourcesErrors.md
- docs/Models/Errors/GetResourcesResponseBody.md - docs/Models/Errors/GetServerResourcesResponseBody.md
- docs/Models/Errors/GetPinErrors.md - docs/Models/Errors/GetPinErrors.md
- docs/Models/Errors/GetPinResponseBody.md - docs/Models/Errors/GetPinResponseBody.md
- docs/Models/Errors/GetTokenByPinIdPlexErrors.md
- docs/Models/Errors/GetTokenByPinIdPlexResponseBody.md
- docs/Models/Errors/GetTokenByPinIdErrors.md - docs/Models/Errors/GetTokenByPinIdErrors.md
- docs/Models/Errors/GetTokenByPinIdResponseBody.md - docs/Models/Errors/GetTokenByPinIdResponseBody.md
- docs/Models/Errors/GetUserDetailsErrors.md
- docs/Models/Errors/GetUserDetailsResponseBody.md
- docs/Models/Errors/GetGlobalHubsErrors.md - docs/Models/Errors/GetGlobalHubsErrors.md
- docs/Models/Errors/GetGlobalHubsResponseBody.md - docs/Models/Errors/GetGlobalHubsResponseBody.md
- docs/Models/Errors/GetLibraryHubsErrors.md - docs/Models/Errors/GetLibraryHubsErrors.md
@@ -1044,14 +1095,18 @@ generatedFiles:
- docs/Models/Errors/GetLibraryItemsResponseBody.md - docs/Models/Errors/GetLibraryItemsResponseBody.md
- docs/Models/Errors/GetRefreshLibraryMetadataErrors.md - docs/Models/Errors/GetRefreshLibraryMetadataErrors.md
- docs/Models/Errors/GetRefreshLibraryMetadataResponseBody.md - docs/Models/Errors/GetRefreshLibraryMetadataResponseBody.md
- docs/Models/Errors/SearchLibraryErrors.md - docs/Models/Errors/GetSearchLibraryErrors.md
- docs/Models/Errors/SearchLibraryResponseBody.md - docs/Models/Errors/GetSearchLibraryResponseBody.md
- docs/Models/Errors/GetMetadataErrors.md - docs/Models/Errors/GetMetaDataByRatingKeyErrors.md
- docs/Models/Errors/GetMetadataResponseBody.md - docs/Models/Errors/GetMetaDataByRatingKeyResponseBody.md
- docs/Models/Errors/GetMetadataChildrenErrors.md - docs/Models/Errors/GetMetadataChildrenErrors.md
- docs/Models/Errors/GetMetadataChildrenResponseBody.md - docs/Models/Errors/GetMetadataChildrenResponseBody.md
- docs/Models/Errors/GetTopWatchedContentErrors.md
- docs/Models/Errors/GetTopWatchedContentResponseBody.md
- docs/Models/Errors/GetOnDeckErrors.md - docs/Models/Errors/GetOnDeckErrors.md
- docs/Models/Errors/GetOnDeckResponseBody.md - docs/Models/Errors/GetOnDeckResponseBody.md
- docs/Models/Errors/GetWatchListErrors.md
- docs/Models/Errors/GetWatchListResponseBody.md
- docs/Models/Errors/LogLineErrors.md - docs/Models/Errors/LogLineErrors.md
- docs/Models/Errors/LogLineResponseBody.md - docs/Models/Errors/LogLineResponseBody.md
- docs/Models/Errors/LogMultiLineErrors.md - docs/Models/Errors/LogMultiLineErrors.md
@@ -1080,6 +1135,8 @@ generatedFiles:
- docs/Models/Errors/GetTransientTokenResponseBody.md - docs/Models/Errors/GetTransientTokenResponseBody.md
- docs/Models/Errors/GetSourceConnectionInformationErrors.md - docs/Models/Errors/GetSourceConnectionInformationErrors.md
- docs/Models/Errors/GetSourceConnectionInformationResponseBody.md - docs/Models/Errors/GetSourceConnectionInformationResponseBody.md
- docs/Models/Errors/GetUserDetailsErrors.md
- docs/Models/Errors/GetUserDetailsResponseBody.md
- docs/Models/Errors/PostUsersSignInDataErrors.md - docs/Models/Errors/PostUsersSignInDataErrors.md
- docs/Models/Errors/PostUsersSignInDataResponseBody.md - docs/Models/Errors/PostUsersSignInDataResponseBody.md
- docs/Models/Errors/GetStatisticsErrors.md - docs/Models/Errors/GetStatisticsErrors.md
@@ -1102,8 +1159,6 @@ generatedFiles:
- docs/Models/Errors/CheckForUpdatesResponseBody.md - docs/Models/Errors/CheckForUpdatesResponseBody.md
- docs/Models/Errors/ApplyUpdatesErrors.md - docs/Models/Errors/ApplyUpdatesErrors.md
- docs/Models/Errors/ApplyUpdatesResponseBody.md - docs/Models/Errors/ApplyUpdatesResponseBody.md
- docs/Models/Errors/GetWatchlistErrors.md
- docs/Models/Errors/GetWatchlistResponseBody.md
- docs/Models/Components/Security.md - docs/Models/Components/Security.md
- docs/sdks/plexapi/README.md - docs/sdks/plexapi/README.md
- docs/sdks/server/README.md - docs/sdks/server/README.md
@@ -1115,13 +1170,13 @@ generatedFiles:
- docs/sdks/hubs/README.md - docs/sdks/hubs/README.md
- docs/sdks/search/README.md - docs/sdks/search/README.md
- docs/sdks/library/README.md - docs/sdks/library/README.md
- docs/sdks/watchlist/README.md
- docs/sdks/log/README.md - docs/sdks/log/README.md
- docs/sdks/playlists/README.md - docs/sdks/playlists/README.md
- docs/sdks/authentication/README.md - docs/sdks/authentication/README.md
- docs/sdks/statistics/README.md - docs/sdks/statistics/README.md
- docs/sdks/sessions/README.md - docs/sdks/sessions/README.md
- docs/sdks/updater/README.md - docs/sdks/updater/README.md
- docs/sdks/watchlist/README.md
- NUGET.md - NUGET.md
- USAGE.md - USAGE.md
- .gitattributes - .gitattributes

View File

@@ -12,7 +12,7 @@ generation:
auth: auth:
oAuth2ClientCredentialsEnabled: true oAuth2ClientCredentialsEnabled: true
csharp: csharp:
version: 0.4.2 version: 0.5.0
additionalDependencies: [] additionalDependencies: []
author: LukeHagar author: LukeHagar
clientServerStatusCodesAsErrors: true clientServerStatusCodesAsErrors: true

View File

@@ -1,9 +1,9 @@
speakeasyVersion: 1.383.2 speakeasyVersion: 1.390.7
sources: sources:
my-source: my-source:
sourceNamespace: my-source sourceNamespace: my-source
sourceRevisionDigest: sha256:c6e5a38f9c953eb820ac1b5cb6d5aade8ee11a7bdb5b568147fd677d61b3a3c5 sourceRevisionDigest: sha256:b6aa1692c74a84d3ce118d305f77944189e0749c6f95a2c57bddb8c606ab8df6
sourceBlobDigest: sha256:730391fe626304e22e265f9470902fc083d5e6110d20d87cdc3ac7da6b4982de sourceBlobDigest: sha256:370cb4409748c4811372a81d94f1a84f60b538087c23f2cb24f72082bcc827f6
tags: tags:
- latest - latest
- main - main
@@ -11,8 +11,8 @@ targets:
plexcsharp: plexcsharp:
source: my-source source: my-source
sourceNamespace: my-source sourceNamespace: my-source
sourceRevisionDigest: sha256:c6e5a38f9c953eb820ac1b5cb6d5aade8ee11a7bdb5b568147fd677d61b3a3c5 sourceRevisionDigest: sha256:b6aa1692c74a84d3ce118d305f77944189e0749c6f95a2c57bddb8c606ab8df6
sourceBlobDigest: sha256:730391fe626304e22e265f9470902fc083d5e6110d20d87cdc3ac7da6b4982de sourceBlobDigest: sha256:370cb4409748c4811372a81d94f1a84f60b538087c23f2cb24f72082bcc827f6
outLocation: /github/workspace/repo outLocation: /github/workspace/repo
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0
@@ -20,7 +20,7 @@ workflow:
sources: sources:
my-source: my-source:
inputs: inputs:
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml - location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/output/plex-media-server-spec-dereferenced.yaml
registry: registry:
location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source
targets: targets:

View File

@@ -3,7 +3,7 @@ speakeasyVersion: latest
sources: sources:
my-source: my-source:
inputs: inputs:
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml - location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/output/plex-media-server-spec-dereferenced.yaml
registry: registry:
location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source
targets: targets:

View File

@@ -12,7 +12,7 @@ using PlexAPI.Models.Components;
var sdk = new PlexAPISDK( var sdk = new PlexAPISDK(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman" xPlexClientIdentifier: "gcgzw5rz2xovp84b4vha3a40"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();
@@ -21,6 +21,53 @@ var res = await sdk.Server.GetServerCapabilitiesAsync();
``` ```
<!-- End SDK Example Usage [usage] --> <!-- End SDK Example Usage [usage] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
## Global Parameters
A parameter is configured globally. This parameter may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `X-Plex-Client-Identifier` to `"gcgzw5rz2xovp84b4vha3a40"` at SDK initialization and then you do not have to pass the same value on calls to operations like `GetServerResources`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration.
### Available Globals
The following global parameter is available.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| xPlexClientIdentifier | string | | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
|
### Example
```csharp
using PlexAPI;
using PlexAPI.Models.Requests;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "gcgzw5rz2xovp84b4vha3a40"
);
GetServerResourcesRequest req = new GetServerResourcesRequest() {
XPlexToken = "CV5xoxjTpFKUzBTShsaf",
IncludeHttps = PlexAPI.Models.Requests.IncludeHttps.One,
IncludeRelay = PlexAPI.Models.Requests.IncludeRelay.One,
IncludeIPv6 = PlexAPI.Models.Requests.IncludeIPv6.One,
};
var res = await sdk.Plex.GetServerResourcesAsync(req);
// handle response
```
<!-- End Global Parameters [global-parameters] -->
<!-- Start Error Handling [errors] --> <!-- Start Error Handling [errors] -->
## Error Handling ## Error Handling
@@ -41,7 +88,7 @@ using PlexAPI.Models.Errors;
var sdk = new PlexAPISDK( var sdk = new PlexAPISDK(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman" xPlexClientIdentifier: "gcgzw5rz2xovp84b4vha3a40"
); );
try try
@@ -73,7 +120,7 @@ You can override the default server globally by passing a server index to the `s
| # | Server | Variables | | # | Server | Variables |
| - | ------ | --------- | | - | ------ | --------- |
| 0 | `{protocol}://{ip}:{port}` | `protocol` (default is `http`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) | | 0 | `{protocol}://{ip}:{port}` | `protocol` (default is `https`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) |
@@ -98,7 +145,7 @@ using PlexAPI.Models.Components;
var sdk = new PlexAPISDK( var sdk = new PlexAPISDK(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman" xPlexClientIdentifier: "gcgzw5rz2xovp84b4vha3a40"
); );
var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2"); var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2");
@@ -125,7 +172,7 @@ using PlexAPI.Models.Components;
var sdk = new PlexAPISDK( var sdk = new PlexAPISDK(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman" xPlexClientIdentifier: "gcgzw5rz2xovp84b4vha3a40"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();

View File

@@ -74,10 +74,10 @@ namespace PlexAPI
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;

View File

@@ -53,6 +53,15 @@ namespace PlexAPI
/// </summary> /// </summary>
Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source); Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source);
/// <summary>
/// Get User Data By Token
///
/// <remarks>
/// Get the User data from the provided X-Plex-Token
/// </remarks>
/// </summary>
Task<GetUserDetailsResponse> GetUserDetailsAsync(string xPlexToken, string? serverUrl = null);
/// <summary> /// <summary>
/// Get User SignIn Data /// Get User SignIn Data
/// ///
@@ -72,6 +81,12 @@ namespace PlexAPI
/// </summary> /// </summary>
public class Authentication: IAuthentication public class Authentication: IAuthentication
{ {
/// <summary>
/// List of server URLs available for the getUserDetails operation.
/// </summary>
public static readonly string[] GetUserDetailsServerList = {
"https://plex.tv/api/v2",
};
/// <summary> /// <summary>
/// List of server URLs available for the post-users-sign-in-data operation. /// List of server URLs available for the post-users-sign-in-data operation.
/// </summary> /// </summary>
@@ -80,10 +95,10 @@ namespace PlexAPI
}; };
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;
@@ -267,6 +282,106 @@ namespace PlexAPI
} }
} }
public async Task<GetUserDetailsResponse> GetUserDetailsAsync(string xPlexToken, string? serverUrl = null)
{
var request = new GetUserDetailsRequest()
{
XPlexToken = xPlexToken,
};
string baseUrl = Utilities.TemplateUrl(GetUserDetailsServerList[0], new Dictionary<string, string>(){
});
if (serverUrl != null)
{
baseUrl = serverUrl;
}
var urlString = URLBuilder.Build(baseUrl, "/user", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent);
if (_securitySource != null)
{
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
}
var hookCtx = new HookContext("getUserDetails", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
HttpResponseMessage httpResponse;
try
{
httpResponse = await _client.SendAsync(httpRequest);
int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
}
}
catch (Exception error)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
else
{
throw;
}
}
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
int responseStatusCode = (int)httpResponse.StatusCode;
if(responseStatusCode == 200)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetUserDetailsUserPlexAccount>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
var response = new GetUserDetailsResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.UserPlexAccount = obj;
return response;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetUserDetailsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse;
throw obj!;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
public async Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(string? xPlexClientIdentifier = null, PostUsersSignInDataRequestBody? requestBody = null, string? serverUrl = null) public async Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(string? xPlexClientIdentifier = null, PostUsersSignInDataRequestBody? requestBody = null, string? serverUrl = null)
{ {
var request = new PostUsersSignInDataRequest() var request = new PostUsersSignInDataRequest()
@@ -282,12 +397,10 @@ namespace PlexAPI
{ {
baseUrl = serverUrl; baseUrl = serverUrl;
} }
var urlString = URLBuilder.Build(baseUrl, "/users/signin", request);
var urlString = baseUrl + "/users/signin";
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true); var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true);
if (serializedBody != null) if (serializedBody != null)

View File

@@ -101,10 +101,10 @@ namespace PlexAPI
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;

View File

@@ -63,10 +63,10 @@ namespace PlexAPI
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;

View File

@@ -49,7 +49,7 @@ namespace PlexAPI
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetRecentlyAddedResponse> GetRecentlyAddedAsync(); Task<GetRecentlyAddedResponse> GetRecentlyAddedAsync(int? xPlexContainerStart = null, int? xPlexContainerSize = null);
/// <summary> /// <summary>
/// Get All Libraries /// Get All Libraries
@@ -112,7 +112,7 @@ namespace PlexAPI
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetLibraryDetailsResponse> GetLibraryDetailsAsync(double sectionId, IncludeDetails? includeDetails = null); Task<GetLibraryDetailsResponse> GetLibraryDetailsAsync(int sectionKey, IncludeDetails? includeDetails = null);
/// <summary> /// <summary>
/// Delete Library Section /// Delete Library Section
@@ -121,7 +121,7 @@ namespace PlexAPI
/// Delete a library using a specific section id /// Delete a library using a specific section id
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<DeleteLibraryResponse> DeleteLibraryAsync(double sectionId); Task<DeleteLibraryResponse> DeleteLibraryAsync(int sectionKey);
/// <summary> /// <summary>
/// Get Library Items /// Get Library Items
@@ -150,7 +150,7 @@ namespace PlexAPI
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetLibraryItemsResponse> GetLibraryItemsAsync(object sectionId, Tag tag, long? includeGuids = null); Task<GetLibraryItemsResponse> GetLibraryItemsAsync(GetLibraryItemsRequest request);
/// <summary> /// <summary>
/// Refresh Metadata Of The Library /// Refresh Metadata Of The Library
@@ -160,7 +160,7 @@ namespace PlexAPI
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetRefreshLibraryMetadataResponse> GetRefreshLibraryMetadataAsync(double sectionId, Force? force = null); Task<GetRefreshLibraryMetadataResponse> GetRefreshLibraryMetadataAsync(int sectionKey, Force? force = null);
/// <summary> /// <summary>
/// Search Library /// Search Library
@@ -187,17 +187,17 @@ namespace PlexAPI
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<SearchLibraryResponse> SearchLibraryAsync(long sectionId, Models.Requests.Type type); Task<GetSearchLibraryResponse> GetSearchLibraryAsync(int sectionKey, QueryParamType type);
/// <summary> /// <summary>
/// Get Items Metadata /// Get Metadata by RatingKey
/// ///
/// <remarks> /// <remarks>
/// This endpoint will return the metadata of a library item specified with the ratingKey.<br/> /// This endpoint will return the metadata of a library item specified with the ratingKey.<br/>
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetMetadataResponse> GetMetadataAsync(double ratingKey); Task<GetMetaDataByRatingKeyResponse> GetMetaDataByRatingKeyAsync(long ratingKey);
/// <summary> /// <summary>
/// Get Items Children /// Get Items Children
@@ -217,7 +217,7 @@ namespace PlexAPI
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetTopWatchedContentResponse> GetTopWatchedContentAsync(long type, long? includeGuids = null); Task<GetTopWatchedContentResponse> GetTopWatchedContentAsync(GetTopWatchedContentQueryParamType type, long? includeGuids = null);
/// <summary> /// <summary>
/// Get On Deck /// Get On Deck
@@ -241,10 +241,10 @@ namespace PlexAPI
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;
@@ -343,11 +343,15 @@ namespace PlexAPI
} }
} }
public async Task<GetRecentlyAddedResponse> GetRecentlyAddedAsync() public async Task<GetRecentlyAddedResponse> GetRecentlyAddedAsync(int? xPlexContainerStart = null, int? xPlexContainerSize = null)
{ {
var request = new GetRecentlyAddedRequest()
{
XPlexContainerStart = xPlexContainerStart,
XPlexContainerSize = xPlexContainerSize,
};
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/recentlyAdded", request);
var urlString = baseUrl + "/library/recentlyAdded";
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
@@ -527,15 +531,15 @@ namespace PlexAPI
} }
} }
public async Task<GetLibraryDetailsResponse> GetLibraryDetailsAsync(double sectionId, IncludeDetails? includeDetails = null) public async Task<GetLibraryDetailsResponse> GetLibraryDetailsAsync(int sectionKey, IncludeDetails? includeDetails = null)
{ {
var request = new GetLibraryDetailsRequest() var request = new GetLibraryDetailsRequest()
{ {
SectionId = sectionId, SectionKey = sectionKey,
IncludeDetails = includeDetails, IncludeDetails = includeDetails,
}; };
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
@@ -623,14 +627,14 @@ namespace PlexAPI
} }
} }
public async Task<DeleteLibraryResponse> DeleteLibraryAsync(double sectionId) public async Task<DeleteLibraryResponse> DeleteLibraryAsync(int sectionKey)
{ {
var request = new DeleteLibraryRequest() var request = new DeleteLibraryRequest()
{ {
SectionId = sectionId, SectionKey = sectionKey,
}; };
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
@@ -708,16 +712,10 @@ namespace PlexAPI
} }
} }
public async Task<GetLibraryItemsResponse> GetLibraryItemsAsync(object sectionId, Tag tag, long? includeGuids = null) public async Task<GetLibraryItemsResponse> GetLibraryItemsAsync(GetLibraryItemsRequest request)
{ {
var request = new GetLibraryItemsRequest()
{
SectionId = sectionId,
Tag = tag,
IncludeGuids = includeGuids,
};
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/{tag}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/{tag}", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
@@ -727,7 +725,7 @@ namespace PlexAPI
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest); httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
} }
var hookCtx = new HookContext("getLibraryItems", null, _securitySource); var hookCtx = new HookContext("get-library-items", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
@@ -805,15 +803,15 @@ namespace PlexAPI
} }
} }
public async Task<GetRefreshLibraryMetadataResponse> GetRefreshLibraryMetadataAsync(double sectionId, Force? force = null) public async Task<GetRefreshLibraryMetadataResponse> GetRefreshLibraryMetadataAsync(int sectionKey, Force? force = null)
{ {
var request = new GetRefreshLibraryMetadataRequest() var request = new GetRefreshLibraryMetadataRequest()
{ {
SectionId = sectionId, SectionKey = sectionKey,
Force = force, Force = force,
}; };
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/refresh", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
@@ -891,15 +889,15 @@ namespace PlexAPI
} }
} }
public async Task<SearchLibraryResponse> SearchLibraryAsync(long sectionId, Models.Requests.Type type) public async Task<GetSearchLibraryResponse> GetSearchLibraryAsync(int sectionKey, QueryParamType type)
{ {
var request = new SearchLibraryRequest() var request = new GetSearchLibraryRequest()
{ {
SectionId = sectionId, SectionKey = sectionKey,
Type = type, Type = type,
}; };
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/search", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/search", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
@@ -909,7 +907,7 @@ namespace PlexAPI
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest); httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
} }
var hookCtx = new HookContext("searchLibrary", null, _securitySource); var hookCtx = new HookContext("get-search-library", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
@@ -949,8 +947,8 @@ namespace PlexAPI
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.SearchLibraryResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetSearchLibraryResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
var response = new SearchLibraryResponse() var response = new GetSearchLibraryResponse()
{ {
StatusCode = responseStatusCode, StatusCode = responseStatusCode,
ContentType = contentType, ContentType = contentType,
@@ -972,7 +970,7 @@ namespace PlexAPI
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<Models.Errors.SearchLibraryResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<Models.Errors.GetSearchLibraryResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
@@ -987,9 +985,9 @@ namespace PlexAPI
} }
} }
public async Task<GetMetadataResponse> GetMetadataAsync(double ratingKey) public async Task<GetMetaDataByRatingKeyResponse> GetMetaDataByRatingKeyAsync(long ratingKey)
{ {
var request = new GetMetadataRequest() var request = new GetMetaDataByRatingKeyRequest()
{ {
RatingKey = ratingKey, RatingKey = ratingKey,
}; };
@@ -1004,7 +1002,7 @@ namespace PlexAPI
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest); httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
} }
var hookCtx = new HookContext("getMetadata", null, _securitySource); var hookCtx = new HookContext("get-meta-data-by-rating-key", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
@@ -1044,8 +1042,8 @@ namespace PlexAPI
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetMetadataResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetMetaDataByRatingKeyResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
var response = new GetMetadataResponse() var response = new GetMetaDataByRatingKeyResponse()
{ {
StatusCode = responseStatusCode, StatusCode = responseStatusCode,
ContentType = contentType, ContentType = contentType,
@@ -1067,7 +1065,7 @@ namespace PlexAPI
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<Models.Errors.GetMetadataResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<Models.Errors.GetMetaDataByRatingKeyResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
@@ -1178,7 +1176,7 @@ namespace PlexAPI
} }
} }
public async Task<GetTopWatchedContentResponse> GetTopWatchedContentAsync(long type, long? includeGuids = null) public async Task<GetTopWatchedContentResponse> GetTopWatchedContentAsync(GetTopWatchedContentQueryParamType type, long? includeGuids = null)
{ {
var request = new GetTopWatchedContentRequest() var request = new GetTopWatchedContentRequest()
{ {
@@ -1206,7 +1204,7 @@ namespace PlexAPI
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await _client.SendAsync(httpRequest);
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
{ {
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
if (_httpResponse != null) if (_httpResponse != null)
@@ -1236,7 +1234,7 @@ namespace PlexAPI
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<GetTopWatchedContentResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetTopWatchedContentResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
var response = new GetTopWatchedContentResponse() var response = new GetTopWatchedContentResponse()
{ {
StatusCode = responseStatusCode, StatusCode = responseStatusCode,
@@ -1251,10 +1249,23 @@ namespace PlexAPI
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<Models.Errors.GetTopWatchedContentResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse;
throw obj!;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else else
{ {
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);

View File

@@ -94,10 +94,10 @@ namespace PlexAPI
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;

View File

@@ -59,6 +59,24 @@ namespace PlexAPI
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state); Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state);
/// <summary>
/// Get Banner Image
///
/// <remarks>
/// Gets the banner image of the media item
/// </remarks>
/// </summary>
Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request);
/// <summary>
/// Get Thumb Image
///
/// <remarks>
/// Gets the thumbnail image of the media item
/// </remarks>
/// </summary>
Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request);
} }
/// <summary> /// <summary>
@@ -72,10 +90,10 @@ namespace PlexAPI
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.4.2"; private const string _sdkVersion = "0.5.0";
private const string _sdkGenVersion = "2.407.0"; private const string _sdkGenVersion = "2.409.8";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.4.2 2.407.0 0.0.3 PlexAPI"; private const string _userAgent = "speakeasy-sdk/csharp 0.5.0 2.409.8 0.0.3 PlexAPI";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<PlexAPI.Models.Components.Security>? _securitySource; private Func<PlexAPI.Models.Components.Security>? _securitySource;
@@ -344,5 +362,185 @@ namespace PlexAPI
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
public async Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request)
{
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/banner", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent);
if (_securitySource != null)
{
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
}
var hookCtx = new HookContext("get-banner-image", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
HttpResponseMessage httpResponse;
try
{
httpResponse = await _client.SendAsync(httpRequest);
int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
}
}
catch (Exception error)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
else
{
throw;
}
}
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
int responseStatusCode = (int)httpResponse.StatusCode;
if(responseStatusCode == 200)
{
if(Utilities.IsContentTypeMatch("image/jpeg", contentType))
{
var response = new GetBannerImageResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync();
return response;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetBannerImageResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse;
throw obj!;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
public async Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request)
{
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/thumb", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent);
if (_securitySource != null)
{
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
}
var hookCtx = new HookContext("get-thumb-image", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
HttpResponseMessage httpResponse;
try
{
httpResponse = await _client.SendAsync(httpRequest);
int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
}
}
catch (Exception error)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
else
{
throw;
}
}
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
int responseStatusCode = (int)httpResponse.StatusCode;
if(responseStatusCode == 200)
{
if(Utilities.IsContentTypeMatch("image/jpeg", contentType))
{
var response = new GetThumbImageResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync();
return response;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetThumbImageResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse;
throw obj!;
}
else
{
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
}
} }
} }

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Components
public class Security public class Security
{ {
[SpeakeasyMetadata("security:scheme=true,type=apiKey,subType=header,name=X-Plex-Token")] [SpeakeasyMetadata("security:scheme=true,type=apiKey,subType=query,name=X-Plex-Token")]
public string? AccessToken { get; set; } public string? AccessToken { get; set; }
} }
} }

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Errors
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetResourcesErrors public class GetBannerImageErrors
{ {
[JsonProperty("code")] [JsonProperty("code")]

View File

@@ -19,11 +19,11 @@ namespace PlexAPI.Models.Errors
/// <summary> /// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary> /// </summary>
public class SearchLibraryResponseBody : Exception public class GetBannerImageResponseBody : Exception
{ {
[JsonProperty("errors")] [JsonProperty("errors")]
public List<SearchLibraryErrors>? Errors { get; set; } public List<GetBannerImageErrors>? Errors { get; set; }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Errors
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetServerIdentityErrors public class GetMediaProvidersErrors
{ {
[JsonProperty("code")] [JsonProperty("code")]

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Models.Errors;
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetMediaProvidersResponseBody : Exception
{
[JsonProperty("errors")]
public List<GetMediaProvidersErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Utils;
public class GetMetaDataByRatingKeyErrors
{
[JsonProperty("code")]
public double? Code { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonProperty("status")]
public double? Status { get; set; }
}
}

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Models.Errors;
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetMetaDataByRatingKeyResponseBody : Exception
{
[JsonProperty("errors")]
public List<GetMetaDataByRatingKeyErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Errors
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class SearchLibraryErrors public class GetSearchLibraryErrors
{ {
[JsonProperty("code")] [JsonProperty("code")]

View File

@@ -19,11 +19,11 @@ namespace PlexAPI.Models.Errors
/// <summary> /// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary> /// </summary>
public class GetResourcesResponseBody : Exception public class GetSearchLibraryResponseBody : Exception
{ {
[JsonProperty("errors")] [JsonProperty("errors")]
public List<GetResourcesErrors>? Errors { get; set; } public List<GetSearchLibraryErrors>? Errors { get; set; }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -10,20 +10,22 @@
namespace PlexAPI.Models.Errors namespace PlexAPI.Models.Errors
{ {
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Models.Errors;
using PlexAPI.Utils; using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http; using System.Net.Http;
using System; using System;
/// <summary> /// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. /// Request Timeout
/// </summary> /// </summary>
public class GetServerIdentityResponseBody : Exception public class GetServerIdentityResponseBody : Exception
{ {
[JsonProperty("errors")] [JsonProperty("code")]
public List<GetServerIdentityErrors>? Errors { get; set; } public long? Code { get; set; }
[JsonProperty("message")]
private string? _message { get; set; }
public override string Message { get {return _message ?? "";} }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Utils;
public class GetServerResourcesErrors
{
[JsonProperty("code")]
public double? Code { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonProperty("status")]
public double? Status { get; set; }
}
}

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Models.Errors;
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetServerResourcesResponseBody : Exception
{
[JsonProperty("errors")]
public List<GetServerResourcesErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Errors
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetWatchlistErrors public class GetThumbImageErrors
{ {
[JsonProperty("code")] [JsonProperty("code")]

View File

@@ -19,11 +19,11 @@ namespace PlexAPI.Models.Errors
/// <summary> /// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary> /// </summary>
public class GetMetadataResponseBody : Exception public class GetThumbImageResponseBody : Exception
{ {
[JsonProperty("errors")] [JsonProperty("errors")]
public List<GetMetadataErrors>? Errors { get; set; } public List<GetThumbImageErrors>? Errors { get; set; }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -20,5 +20,8 @@ namespace PlexAPI.Models.Errors
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")]
public long? Status { get; set; }
} }
} }

View File

@@ -0,0 +1,24 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Utils;
public class GetTokenByPinIdPlexErrors
{
[JsonProperty("code")]
public long? Code { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
}
}

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Models.Errors;
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Not Found or Expired
/// </summary>
public class GetTokenByPinIdPlexResponseBody : Exception
{
[JsonProperty("errors")]
public List<GetTokenByPinIdPlexErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -17,7 +17,7 @@ namespace PlexAPI.Models.Errors
using System; using System;
/// <summary> /// <summary>
/// Not Found or Expired /// Bad Request response when the X-Plex-Client-Identifier is missing
/// </summary> /// </summary>
public class GetTokenByPinIdResponseBody : Exception public class GetTokenByPinIdResponseBody : Exception
{ {

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Utils;
public class GetTopWatchedContentErrors
{
[JsonProperty("code")]
public double? Code { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonProperty("status")]
public double? Status { get; set; }
}
}

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Errors
{
using Newtonsoft.Json;
using PlexAPI.Models.Errors;
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetTopWatchedContentResponseBody : Exception
{
[JsonProperty("errors")]
public List<GetTopWatchedContentErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Errors
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataErrors public class GetWatchListErrors
{ {
[JsonProperty("code")] [JsonProperty("code")]

View File

@@ -19,11 +19,11 @@ namespace PlexAPI.Models.Errors
/// <summary> /// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary> /// </summary>
public class GetWatchlistResponseBody : Exception public class GetWatchListResponseBody : Exception
{ {
[JsonProperty("errors")] [JsonProperty("errors")]
public List<GetWatchlistErrors>? Errors { get; set; } public List<GetWatchListErrors>? Errors { get; set; }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -22,7 +22,7 @@ namespace PlexAPI.Models.Requests
public Tonight? Tonight { get; set; } public Tonight? Tonight { get; set; }
/// <summary> /// <summary>
/// Indicate that the latest version should be marked as skipped. The &lt;Release&gt; entry for this version will have the `state` set to `skipped`. /// Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=skip")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=skip")]
public Skip? Skip { get; set; } public Skip? Skip { get; set; }

View File

@@ -16,24 +16,24 @@ namespace PlexAPI.Models.Requests
{ {
[JsonProperty("protocol")] [JsonProperty("protocol")]
public string? Protocol { get; set; } public string Protocol { get; set; } = default!;
[JsonProperty("address")] [JsonProperty("address")]
public string? Address { get; set; } public string Address { get; set; } = default!;
[JsonProperty("port")] [JsonProperty("port")]
public double? Port { get; set; } public double Port { get; set; } = default!;
[JsonProperty("uri")] [JsonProperty("uri")]
public string? Uri { get; set; } public string Uri { get; set; } = default!;
[JsonProperty("local")] [JsonProperty("local")]
public bool? Local { get; set; } public bool Local { get; set; } = default!;
[JsonProperty("relay")] [JsonProperty("relay")]
public bool? Relay { get; set; } public bool Relay { get; set; } = default!;
[JsonProperty("IPv6")] [JsonProperty("IPv6")]
public bool? IPv6 { get; set; } public bool IPv6 { get; set; } = default!;
} }
} }

View File

@@ -14,28 +14,28 @@ namespace PlexAPI.Models.Requests
using System; using System;
/// <summary> /// <summary>
/// Filter /// type of playlist to create
/// </summary> /// </summary>
public enum PathParamFilter public enum CreatePlaylistQueryParamType
{ {
[JsonProperty("all")] [JsonProperty("audio")]
All, Audio,
[JsonProperty("available")] [JsonProperty("video")]
Available, Video,
[JsonProperty("released")] [JsonProperty("photo")]
Released, Photo,
} }
public static class PathParamFilterExtension public static class CreatePlaylistQueryParamTypeExtension
{ {
public static string Value(this PathParamFilter value) public static string Value(this CreatePlaylistQueryParamType value)
{ {
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
} }
public static PathParamFilter ToEnum(this string value) public static CreatePlaylistQueryParamType ToEnum(this string value)
{ {
foreach(var field in typeof(PathParamFilter).GetFields()) foreach(var field in typeof(CreatePlaylistQueryParamType).GetFields())
{ {
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0) if (attributes.Length == 0)
@@ -48,14 +48,14 @@ namespace PlexAPI.Models.Requests
{ {
var enumVal = field.GetValue(null); var enumVal = field.GetValue(null);
if (enumVal is PathParamFilter) if (enumVal is CreatePlaylistQueryParamType)
{ {
return (PathParamFilter)enumVal; return (CreatePlaylistQueryParamType)enumVal;
} }
} }
} }
throw new Exception($"Unknown value {value} for enum PathParamFilter"); throw new Exception($"Unknown value {value} for enum CreatePlaylistQueryParamType");
} }
} }

View File

@@ -25,7 +25,7 @@ namespace PlexAPI.Models.Requests
/// type of playlist to create /// type of playlist to create
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public QueryParamType Type { get; set; } = default!; public CreatePlaylistQueryParamType Type { get; set; } = default!;
/// <summary> /// <summary>
/// whether the playlist is smart or not /// whether the playlist is smart or not

View File

@@ -15,9 +15,14 @@ namespace PlexAPI.Models.Requests
{ {
/// <summary> /// <summary>
/// The id of the library /// The unique key of the Plex library. <br/>
///
/// <remarks>
/// Note: This is unique in the context of the Plex server.<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")]
public double SectionId { get; set; } = default!; public int SectionKey { get; set; } = default!;
} }
} }

View File

@@ -0,0 +1,29 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using Newtonsoft.Json;
using PlexAPI.Models.Requests;
using PlexAPI.Utils;
using System.Collections.Generic;
public class Feature
{
[JsonProperty("key")]
public string? Key { get; set; }
[JsonProperty("type")]
public string? Type { get; set; }
[JsonProperty("Directory")]
public List<GetMediaProvidersDirectory>? Directory { get; set; }
}
}

View File

@@ -9,17 +9,54 @@
#nullable enable #nullable enable
namespace PlexAPI.Models.Requests namespace PlexAPI.Models.Requests
{ {
using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
using System;
/// <summary> /// <summary>
/// Filters content by field and direction/equality<br/> /// Filter
///
/// <remarks>
/// (Unknown if viewedAt is the only supported column)<br/>
///
/// </remarks>
/// </summary> /// </summary>
public class Filter public enum Filter
{ {
[JsonProperty("all")]
All,
[JsonProperty("available")]
Available,
[JsonProperty("released")]
Released,
} }
public static class FilterExtension
{
public static string Value(this Filter value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static Filter ToEnum(this string value)
{
foreach(var field in typeof(Filter).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is Filter)
{
return (Filter)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum Filter");
}
}
} }

View File

@@ -0,0 +1,41 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
public class GetBannerImageRequest
{
/// <summary>
/// the id of the library item to return the children of.
/// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")]
public long RatingKey { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")]
public long Width { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")]
public long Height { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=minSize")]
public long MinSize { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=upscale")]
public long Upscale { get; set; } = default!;
/// <summary>
/// Plex Authentication Token
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!;
}
}

View File

@@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
public class GetBannerImageResponse
{
/// <summary>
/// HTTP response content type for this operation
/// </summary>
public string? ContentType { get; set; } = default!;
/// <summary>
/// HTTP response status code for this operation
/// </summary>
public int StatusCode { get; set; } = default!;
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
public HttpResponseMessage RawResponse { get; set; } = default!;
/// <summary>
/// Successful response returning an image
/// </summary>
public byte[]? Bytes { get; set; }
public Dictionary<string, List<string>> Headers { get; set; } = default!;
}
}

View File

@@ -16,10 +16,15 @@ namespace PlexAPI.Models.Requests
{ {
/// <summary> /// <summary>
/// The id of the library /// The unique key of the Plex library. <br/>
///
/// <remarks>
/// Note: This is unique in the context of the Plex server.<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")]
public double SectionId { get; set; } = default!; public int SectionKey { get; set; } = default!;
/// <summary> /// <summary>
/// Whether or not to include details for a section (types, filters, and sorts). <br/> /// Whether or not to include details for a section (types, filters, and sorts). <br/>

View File

@@ -16,10 +16,15 @@ namespace PlexAPI.Models.Requests
{ {
/// <summary> /// <summary>
/// the Id of the library to query /// The unique key of the Plex library. <br/>
///
/// <remarks>
/// Note: This is unique in the context of the Plex server.<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")]
public object SectionId { get; set; } = default!; public int SectionKey { get; set; } = default!;
/// <summary> /// <summary>
/// A key representing a specific tag within the section. /// A key representing a specific tag within the section.
@@ -27,6 +32,21 @@ namespace PlexAPI.Models.Requests
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=tag")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=tag")]
public Tag Tag { get; set; } = default!; public Tag Tag { get; set; } = default!;
/// <summary>
/// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public Models.Requests.Type Type { get; set; } = default!;
/// <summary> /// <summary>
/// Adds the Guids object to the response<br/> /// Adds the Guids object to the response<br/>
/// ///
@@ -35,6 +55,40 @@ namespace PlexAPI.Models.Requests
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGuids")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGuids")]
public long? IncludeGuids { get; set; } public IncludeGuids? IncludeGuids { get; set; }
/// <summary>
/// Adds the Meta object to the response<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeMeta")]
public IncludeMeta? IncludeMeta { get; set; }
/// <summary>
/// The index of the first item to return. If not specified, the first item will be returned.<br/>
///
/// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 0<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")]
public int? XPlexContainerStart { get; set; } = 0;
/// <summary>
/// The number of items to return. If not specified, all items will be returned.<br/>
///
/// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 50<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")]
public int? XPlexContainerSize { get; set; } = 50;
} }
} }

View File

@@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using Newtonsoft.Json;
using PlexAPI.Models.Requests;
using PlexAPI.Utils;
using System.Collections.Generic;
public class GetMediaProvidersDirectory
{
[JsonProperty("hubKey")]
public string? HubKey { get; set; }
[JsonProperty("title")]
public string? Title { get; set; }
[JsonProperty("agent")]
public string? Agent { get; set; }
[JsonProperty("language")]
public string? Language { get; set; }
[JsonProperty("refreshing")]
public bool? Refreshing { get; set; }
[JsonProperty("scanner")]
public string? Scanner { get; set; }
[JsonProperty("uuid")]
public string? Uuid { get; set; }
[JsonProperty("id")]
public string? Id { get; set; }
[JsonProperty("key")]
public string? Key { get; set; }
[JsonProperty("type")]
public string? Type { get; set; }
[JsonProperty("subtype")]
public string? Subtype { get; set; }
[JsonProperty("updatedAt")]
public long? UpdatedAt { get; set; }
[JsonProperty("scannedAt")]
public long? ScannedAt { get; set; }
[JsonProperty("Pivot")]
public List<Pivot>? Pivot { get; set; }
}
}

View File

@@ -0,0 +1,152 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using Newtonsoft.Json;
using PlexAPI.Models.Requests;
using PlexAPI.Utils;
using System.Collections.Generic;
public class GetMediaProvidersMediaContainer
{
[JsonProperty("size")]
public long? Size { get; set; }
[JsonProperty("allowCameraUpload")]
public bool? AllowCameraUpload { get; set; }
[JsonProperty("allowChannelAccess")]
public bool? AllowChannelAccess { get; set; }
[JsonProperty("allowSharing")]
public bool? AllowSharing { get; set; }
[JsonProperty("allowSync")]
public bool? AllowSync { get; set; }
[JsonProperty("allowTuners")]
public bool? AllowTuners { get; set; }
[JsonProperty("backgroundProcessing")]
public bool? BackgroundProcessing { get; set; }
[JsonProperty("certificate")]
public bool? Certificate { get; set; }
[JsonProperty("companionProxy")]
public bool? CompanionProxy { get; set; }
[JsonProperty("countryCode")]
public string? CountryCode { get; set; }
[JsonProperty("diagnostics")]
public string? Diagnostics { get; set; }
[JsonProperty("eventStream")]
public bool? EventStream { get; set; }
[JsonProperty("friendlyName")]
public string? FriendlyName { get; set; }
[JsonProperty("livetv")]
public long? Livetv { get; set; }
[JsonProperty("machineIdentifier")]
public string? MachineIdentifier { get; set; }
[JsonProperty("musicAnalysis")]
public long? MusicAnalysis { get; set; }
[JsonProperty("myPlex")]
public bool? MyPlex { get; set; }
[JsonProperty("myPlexMappingState")]
public string? MyPlexMappingState { get; set; }
[JsonProperty("myPlexSigninState")]
public string? MyPlexSigninState { get; set; }
[JsonProperty("myPlexSubscription")]
public bool? MyPlexSubscription { get; set; }
[JsonProperty("myPlexUsername")]
public string? MyPlexUsername { get; set; }
[JsonProperty("offlineTranscode")]
public long? OfflineTranscode { get; set; }
[JsonProperty("ownerFeatures")]
public string? OwnerFeatures { get; set; }
[JsonProperty("platform")]
public string? Platform { get; set; }
[JsonProperty("platformVersion")]
public string? PlatformVersion { get; set; }
[JsonProperty("pluginHost")]
public bool? PluginHost { get; set; }
[JsonProperty("pushNotifications")]
public bool? PushNotifications { get; set; }
[JsonProperty("readOnlyLibraries")]
public bool? ReadOnlyLibraries { get; set; }
[JsonProperty("streamingBrainABRVersion")]
public long? StreamingBrainABRVersion { get; set; }
[JsonProperty("streamingBrainVersion")]
public long? StreamingBrainVersion { get; set; }
[JsonProperty("sync")]
public bool? Sync { get; set; }
[JsonProperty("transcoderActiveVideoSessions")]
public long? TranscoderActiveVideoSessions { get; set; }
[JsonProperty("transcoderAudio")]
public bool? TranscoderAudio { get; set; }
[JsonProperty("transcoderLyrics")]
public bool? TranscoderLyrics { get; set; }
[JsonProperty("transcoderSubtitles")]
public bool? TranscoderSubtitles { get; set; }
[JsonProperty("transcoderVideo")]
public bool? TranscoderVideo { get; set; }
[JsonProperty("transcoderVideoBitrates")]
public string? TranscoderVideoBitrates { get; set; }
[JsonProperty("transcoderVideoQualities")]
public string? TranscoderVideoQualities { get; set; }
[JsonProperty("transcoderVideoResolutions")]
public string? TranscoderVideoResolutions { get; set; }
[JsonProperty("updatedAt")]
public long? UpdatedAt { get; set; }
[JsonProperty("updater")]
public bool? Updater { get; set; }
[JsonProperty("version")]
public string? Version { get; set; }
[JsonProperty("voiceSearch")]
public bool? VoiceSearch { get; set; }
[JsonProperty("MediaProvider")]
public List<MediaProvider>? MediaProvider { get; set; }
}
}

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
public class GetMediaProvidersRequest
{
/// <summary>
/// Plex Authentication Token
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!;
}
}

View File

@@ -0,0 +1,40 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Models.Requests;
using PlexAPI.Utils;
using System.Net.Http;
using System;
public class GetMediaProvidersResponse
{
/// <summary>
/// HTTP response content type for this operation
/// </summary>
public string? ContentType { get; set; } = default!;
/// <summary>
/// HTTP response status code for this operation
/// </summary>
public int StatusCode { get; set; } = default!;
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
public HttpResponseMessage RawResponse { get; set; } = default!;
/// <summary>
/// Media providers and their features
/// </summary>
public Models.Requests.GetMediaProvidersResponseBody? Object { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using Newtonsoft.Json;
using PlexAPI.Models.Requests;
using PlexAPI.Utils;
/// <summary>
/// Media providers and their features
/// </summary>
public class GetMediaProvidersResponseBody
{
[JsonProperty("MediaContainer")]
public GetMediaProvidersMediaContainer? MediaContainer { get; set; }
}
}

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataCountry public class GetMetaDataByRatingKeyCountry
{ {
[JsonProperty("id")] [JsonProperty("id")]

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataDirector public class GetMetaDataByRatingKeyDirector
{ {
[JsonProperty("id")] [JsonProperty("id")]

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataGenre public class GetMetaDataByRatingKeyGenre
{ {
[JsonProperty("id")] [JsonProperty("id")]

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
using System.Collections.Generic; using System.Collections.Generic;
public class GetMetadataMedia public class GetMetaDataByRatingKeyMedia
{ {
[JsonProperty("id")] [JsonProperty("id")]
@@ -66,6 +66,6 @@ namespace PlexAPI.Models.Requests
public string? VideoProfile { get; set; } public string? VideoProfile { get; set; }
[JsonProperty("Part")] [JsonProperty("Part")]
public List<GetMetadataPart>? Part { get; set; } public List<GetMetaDataByRatingKeyPart>? Part { get; set; }
} }
} }

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
using System.Collections.Generic; using System.Collections.Generic;
public class GetMetadataMediaContainer public class GetMetaDataByRatingKeyMediaContainer
{ {
[JsonProperty("size")] [JsonProperty("size")]
@@ -42,6 +42,6 @@ namespace PlexAPI.Models.Requests
public int? MediaTagVersion { get; set; } public int? MediaTagVersion { get; set; }
[JsonProperty("Metadata")] [JsonProperty("Metadata")]
public List<GetMetadataMetadata>? Metadata { get; set; } public List<GetMetaDataByRatingKeyMetadata>? Metadata { get; set; }
} }
} }

View File

@@ -15,7 +15,7 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
using System.Collections.Generic; using System.Collections.Generic;
public class GetMetadataMetadata public class GetMetaDataByRatingKeyMetadata
{ {
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
@@ -91,13 +91,13 @@ namespace PlexAPI.Models.Requests
public string? RatingImage { get; set; } public string? RatingImage { get; set; }
[JsonProperty("Media")] [JsonProperty("Media")]
public List<GetMetadataMedia>? Media { get; set; } public List<GetMetaDataByRatingKeyMedia>? Media { get; set; }
[JsonProperty("Genre")] [JsonProperty("Genre")]
public List<GetMetadataGenre>? Genre { get; set; } public List<GetMetaDataByRatingKeyGenre>? Genre { get; set; }
[JsonProperty("Country")] [JsonProperty("Country")]
public List<GetMetadataCountry>? Country { get; set; } public List<GetMetaDataByRatingKeyCountry>? Country { get; set; }
[JsonProperty("Guid")] [JsonProperty("Guid")]
public List<Guids>? Guids { get; set; } public List<Guids>? Guids { get; set; }
@@ -106,13 +106,13 @@ namespace PlexAPI.Models.Requests
public List<Ratings>? Ratings { get; set; } public List<Ratings>? Ratings { get; set; }
[JsonProperty("Director")] [JsonProperty("Director")]
public List<GetMetadataDirector>? Director { get; set; } public List<GetMetaDataByRatingKeyDirector>? Director { get; set; }
[JsonProperty("Writer")] [JsonProperty("Writer")]
public List<GetMetadataWriter>? Writer { get; set; } public List<GetMetaDataByRatingKeyWriter>? Writer { get; set; }
[JsonProperty("Role")] [JsonProperty("Role")]
public List<GetMetadataRole>? Role { get; set; } public List<GetMetaDataByRatingKeyRole>? Role { get; set; }
[JsonProperty("Producer")] [JsonProperty("Producer")]
public List<Producer>? Producer { get; set; } public List<Producer>? Producer { get; set; }

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
using System.Collections.Generic; using System.Collections.Generic;
public class GetMetadataPart public class GetMetaDataByRatingKeyPart
{ {
[JsonProperty("id")] [JsonProperty("id")]

View File

@@ -11,13 +11,13 @@ namespace PlexAPI.Models.Requests
{ {
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataRequest public class GetMetaDataByRatingKeyRequest
{ {
/// <summary> /// <summary>
/// the id of the library item to return the children of. /// the id of the library item to return the children of.
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")]
public double RatingKey { get; set; } = default!; public long RatingKey { get; set; } = default!;
} }
} }

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using System.Net.Http; using System.Net.Http;
using System; using System;
public class GetMetadataResponse public class GetMetaDataByRatingKeyResponse
{ {
/// <summary> /// <summary>
@@ -35,6 +35,6 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// The metadata of the library item. /// The metadata of the library item.
/// </summary> /// </summary>
public Models.Requests.GetMetadataResponseBody? Object { get; set; } public Models.Requests.GetMetaDataByRatingKeyResponseBody? Object { get; set; }
} }
} }

View File

@@ -16,10 +16,10 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// The metadata of the library item. /// The metadata of the library item.
/// </summary> /// </summary>
public class GetMetadataResponseBody public class GetMetaDataByRatingKeyResponseBody
{ {
[JsonProperty("MediaContainer")] [JsonProperty("MediaContainer")]
public GetMetadataMediaContainer? MediaContainer { get; set; } public GetMetaDataByRatingKeyMediaContainer? MediaContainer { get; set; }
} }
} }

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataRole public class GetMetaDataByRatingKeyRole
{ {
[JsonProperty("id")] [JsonProperty("id")]

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetMetadataWriter public class GetMetaDataByRatingKeyWriter
{ {
[JsonProperty("id")] [JsonProperty("id")]

View File

@@ -14,16 +14,6 @@ namespace PlexAPI.Models.Requests
public class GetPinRequest public class GetPinRequest
{ {
/// <summary>
/// Product name of the application shown in the list of devices<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string XPlexProduct { get; set; } = default!;
/// <summary> /// <summary>
/// Determines the kind of code returned by the API call<br/> /// Determines the kind of code returned by the API call<br/>
/// ///
@@ -45,7 +35,10 @@ namespace PlexAPI.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")]
public string? XPlexClientIdentifier { get; set; } public string? XPlexClientIdentifier { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Product")]
public string? XPlexProduct { get; set; }
} }
} }

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
/// <summary>
/// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary>
public enum GetPlaylistContentsQueryParamType
{
One = 1,
Two = 2,
Three = 3,
Four = 4,
}
}

View File

@@ -9,6 +9,7 @@
#nullable enable #nullable enable
namespace PlexAPI.Models.Requests namespace PlexAPI.Models.Requests
{ {
using PlexAPI.Models.Requests;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetPlaylistContentsRequest public class GetPlaylistContentsRequest
@@ -21,9 +22,18 @@ namespace PlexAPI.Models.Requests
public double PlaylistID { get; set; } = default!; public double PlaylistID { get; set; } = default!;
/// <summary> /// <summary>
/// the metadata type of the item to return /// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public double Type { get; set; } = default!; public GetPlaylistContentsQueryParamType Type { get; set; } = default!;
} }
} }

View File

@@ -0,0 +1,41 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
public class GetRecentlyAddedRequest
{
/// <summary>
/// The index of the first item to return. If not specified, the first item will be returned.<br/>
///
/// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 0<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")]
public int? XPlexContainerStart { get; set; } = 0;
/// <summary>
/// The number of items to return. If not specified, all items will be returned.<br/>
///
/// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 50<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")]
public int? XPlexContainerSize { get; set; } = 50;
}
}

View File

@@ -16,10 +16,15 @@ namespace PlexAPI.Models.Requests
{ {
/// <summary> /// <summary>
/// The id of the library /// The unique key of the Plex library. <br/>
///
/// <remarks>
/// Note: This is unique in the context of the Plex server.<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")]
public double SectionId { get; set; } = default!; public int SectionKey { get; set; } = default!;
/// <summary> /// <summary>
/// Force the refresh even if the library is already being refreshed. /// Force the refresh even if the library is already being refreshed.

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
using System.Collections.Generic; using System.Collections.Generic;
public class SearchLibraryMediaContainer public class GetSearchLibraryMediaContainer
{ {
[JsonProperty("size")] [JsonProperty("size")]
@@ -54,6 +54,6 @@ namespace PlexAPI.Models.Requests
public int? ViewMode { get; set; } public int? ViewMode { get; set; }
[JsonProperty("Metadata")] [JsonProperty("Metadata")]
public List<SearchLibraryMetadata>? Metadata { get; set; } public List<GetSearchLibraryMetadata>? Metadata { get; set; }
} }
} }

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using Newtonsoft.Json; using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
public class SearchLibraryMetadata public class GetSearchLibraryMetadata
{ {
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]

View File

@@ -12,19 +12,33 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Models.Requests; using PlexAPI.Models.Requests;
using PlexAPI.Utils; using PlexAPI.Utils;
public class SearchLibraryRequest public class GetSearchLibraryRequest
{ {
/// <summary> /// <summary>
/// the Id of the library to query /// The unique key of the Plex library. <br/>
///
/// <remarks>
/// Note: This is unique in the context of the Plex server.<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")]
public long SectionId { get; set; } = default!; public int SectionKey { get; set; } = default!;
/// <summary> /// <summary>
/// Plex content type to search for /// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public Models.Requests.Type Type { get; set; } = default!; public QueryParamType Type { get; set; } = default!;
} }
} }

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using System.Net.Http; using System.Net.Http;
using System; using System;
public class SearchLibraryResponse public class GetSearchLibraryResponse
{ {
/// <summary> /// <summary>
@@ -35,6 +35,6 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// The contents of the library by section and type /// The contents of the library by section and type
/// </summary> /// </summary>
public Models.Requests.SearchLibraryResponseBody? Object { get; set; } public Models.Requests.GetSearchLibraryResponseBody? Object { get; set; }
} }
} }

View File

@@ -16,10 +16,10 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// The contents of the library by section and type /// The contents of the library by section and type
/// </summary> /// </summary>
public class SearchLibraryResponseBody public class GetSearchLibraryResponseBody
{ {
[JsonProperty("MediaContainer")] [JsonProperty("MediaContainer")]
public SearchLibraryMediaContainer? MediaContainer { get; set; } public GetSearchLibraryMediaContainer? MediaContainer { get; set; }
} }
} }

View File

@@ -12,9 +12,15 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Models.Requests; using PlexAPI.Models.Requests;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetResourcesRequest public class GetServerResourcesRequest
{ {
/// <summary>
/// Plex Authentication Token
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!;
/// <summary> /// <summary>
/// The unique identifier for the client application<br/> /// The unique identifier for the client application<br/>
/// ///
@@ -24,25 +30,30 @@ namespace PlexAPI.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")]
public string? XPlexClientIdentifier { get; set; } public string? XPlexClientIdentifier { get; set; }
/// <summary> /// <summary>
/// Include Https entries in the results /// Include Https entries in the results
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeHttps")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeHttps")]
public IncludeHttps? IncludeHttps { get; set; } public IncludeHttps? IncludeHttps { get; set; } = PlexAPI.Models.Requests.IncludeHttps.Zero;
/// <summary> /// <summary>
/// Include Relay addresses in the results /// Include Relay addresses in the results <br/>
///
/// <remarks>
/// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeRelay")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeRelay")]
public IncludeRelay? IncludeRelay { get; set; } public IncludeRelay? IncludeRelay { get; set; } = PlexAPI.Models.Requests.IncludeRelay.Zero;
/// <summary> /// <summary>
/// Include IPv6 entries in the results /// Include IPv6 entries in the results
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeIPv6")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeIPv6")]
public IncludeIPv6? IncludeIPv6 { get; set; } public IncludeIPv6? IncludeIPv6 { get; set; } = PlexAPI.Models.Requests.IncludeIPv6.Zero;
} }
} }

View File

@@ -15,7 +15,7 @@ namespace PlexAPI.Models.Requests
using System.Net.Http; using System.Net.Http;
using System; using System;
public class GetResourcesResponse public class GetServerResourcesResponse
{ {
/// <summary> /// <summary>

View File

@@ -44,7 +44,7 @@ namespace PlexAPI.Models.Requests
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")]
public Filter? Filter { get; set; } public QueryParamFilter? Filter { get; set; }
/// <summary> /// <summary>
/// Filters the results based on the id of a valid library section<br/> /// Filters the results based on the id of a valid library section<br/>

View File

@@ -0,0 +1,41 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
public class GetThumbImageRequest
{
/// <summary>
/// the id of the library item to return the children of.
/// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")]
public long RatingKey { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")]
public long Width { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")]
public long Height { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=minSize")]
public long MinSize { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=upscale")]
public long Upscale { get; set; } = default!;
/// <summary>
/// Plex Authentication Token
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!;
}
}

View File

@@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
using System.Collections.Generic;
using System.Net.Http;
using System;
public class GetThumbImageResponse
{
/// <summary>
/// HTTP response content type for this operation
/// </summary>
public string? ContentType { get; set; } = default!;
/// <summary>
/// HTTP response status code for this operation
/// </summary>
public int StatusCode { get; set; } = default!;
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
public HttpResponseMessage RawResponse { get; set; } = default!;
/// <summary>
/// Successful response returning an image
/// </summary>
public byte[]? Bytes { get; set; }
public Dictionary<string, List<string>> Headers { get; set; } = default!;
}
}

View File

@@ -29,7 +29,7 @@ namespace PlexAPI.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")]
public string? XPlexClientIdentifier { get; set; } public string? XPlexClientIdentifier { get; set; }
} }
} }

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
/// <summary>
/// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary>
public enum GetTopWatchedContentQueryParamType
{
One = 1,
Two = 2,
Three = 3,
Four = 4,
}
}

View File

@@ -9,16 +9,26 @@
#nullable enable #nullable enable
namespace PlexAPI.Models.Requests namespace PlexAPI.Models.Requests
{ {
using PlexAPI.Models.Requests;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetTopWatchedContentRequest public class GetTopWatchedContentRequest
{ {
/// <summary> /// <summary>
/// the library type (1 - movies, 2 - shows, 3 - music) /// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public long Type { get; set; } = default!; public GetTopWatchedContentQueryParamType Type { get; set; } = default!;
/// <summary> /// <summary>
/// Adds the Guids object to the response<br/> /// Adds the Guids object to the response<br/>

View File

@@ -35,6 +35,6 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// The metadata of the library item. /// The metadata of the library item.
/// </summary> /// </summary>
public GetTopWatchedContentResponseBody? Object { get; set; } public Models.Requests.GetTopWatchedContentResponseBody? Object { get; set; }
} }
} }

View File

@@ -16,7 +16,7 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// String representation of subscriptionActive /// String representation of subscriptionActive
/// </summary> /// </summary>
public enum GetUserDetailsPlexStatus public enum GetUserDetailsAuthenticationResponseStatus
{ {
[JsonProperty("Inactive")] [JsonProperty("Inactive")]
Inactive, Inactive,
@@ -24,16 +24,16 @@ namespace PlexAPI.Models.Requests
Active, Active,
} }
public static class GetUserDetailsPlexStatusExtension public static class GetUserDetailsAuthenticationResponseStatusExtension
{ {
public static string Value(this GetUserDetailsPlexStatus value) public static string Value(this GetUserDetailsAuthenticationResponseStatus value)
{ {
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
} }
public static GetUserDetailsPlexStatus ToEnum(this string value) public static GetUserDetailsAuthenticationResponseStatus ToEnum(this string value)
{ {
foreach(var field in typeof(GetUserDetailsPlexStatus).GetFields()) foreach(var field in typeof(GetUserDetailsAuthenticationResponseStatus).GetFields())
{ {
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0) if (attributes.Length == 0)
@@ -46,14 +46,14 @@ namespace PlexAPI.Models.Requests
{ {
var enumVal = field.GetValue(null); var enumVal = field.GetValue(null);
if (enumVal is GetUserDetailsPlexStatus) if (enumVal is GetUserDetailsAuthenticationResponseStatus)
{ {
return (GetUserDetailsPlexStatus)enumVal; return (GetUserDetailsAuthenticationResponseStatus)enumVal;
} }
} }
} }
throw new Exception($"Unknown value {value} for enum GetUserDetailsPlexStatus"); throw new Exception($"Unknown value {value} for enum GetUserDetailsAuthenticationResponseStatus");
} }
} }

View File

@@ -16,7 +16,7 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// String representation of subscriptionActive /// String representation of subscriptionActive
/// </summary> /// </summary>
public enum GetUserDetailsPlexResponseStatus public enum GetUserDetailsAuthenticationStatus
{ {
[JsonProperty("Inactive")] [JsonProperty("Inactive")]
Inactive, Inactive,
@@ -24,16 +24,16 @@ namespace PlexAPI.Models.Requests
Active, Active,
} }
public static class GetUserDetailsPlexResponseStatusExtension public static class GetUserDetailsAuthenticationStatusExtension
{ {
public static string Value(this GetUserDetailsPlexResponseStatus value) public static string Value(this GetUserDetailsAuthenticationStatus value)
{ {
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
} }
public static GetUserDetailsPlexResponseStatus ToEnum(this string value) public static GetUserDetailsAuthenticationStatus ToEnum(this string value)
{ {
foreach(var field in typeof(GetUserDetailsPlexResponseStatus).GetFields()) foreach(var field in typeof(GetUserDetailsAuthenticationStatus).GetFields())
{ {
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0) if (attributes.Length == 0)
@@ -46,14 +46,14 @@ namespace PlexAPI.Models.Requests
{ {
var enumVal = field.GetValue(null); var enumVal = field.GetValue(null);
if (enumVal is GetUserDetailsPlexResponseStatus) if (enumVal is GetUserDetailsAuthenticationStatus)
{ {
return (GetUserDetailsPlexResponseStatus)enumVal; return (GetUserDetailsAuthenticationStatus)enumVal;
} }
} }
} }
throw new Exception($"Unknown value {value} for enum GetUserDetailsPlexResponseStatus"); throw new Exception($"Unknown value {value} for enum GetUserDetailsAuthenticationStatus");
} }
} }

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
public class GetUserDetailsRequest
{
/// <summary>
/// Plex Authentication Token
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!;
}
}

View File

@@ -39,7 +39,7 @@ namespace PlexAPI.Models.Requests
/// String representation of subscriptionActive /// String representation of subscriptionActive
/// </summary> /// </summary>
[JsonProperty("status")] [JsonProperty("status")]
public GetUserDetailsPlexResponseStatus? Status { get; set; } public GetUserDetailsAuthenticationResponseStatus? Status { get; set; }
/// <summary> /// <summary>
/// Payment service used for your Plex Pass subscription /// Payment service used for your Plex Pass subscription

View File

@@ -12,17 +12,17 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Models.Requests; using PlexAPI.Models.Requests;
using PlexAPI.Utils; using PlexAPI.Utils;
public class GetWatchlistRequest public class GetWatchListRequest
{ {
/// <summary> /// <summary>
/// Filter /// Filter
/// </summary> /// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=filter")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=filter")]
public PathParamFilter Filter { get; set; } = default!; public Filter Filter { get; set; } = default!;
/// <summary> /// <summary>
/// User Token /// Plex Authentication Token
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!; public string XPlexToken { get; set; } = default!;
@@ -85,21 +85,23 @@ namespace PlexAPI.Models.Requests
/// ///
/// <remarks> /// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/> /// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 0<br/>
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")]
public int? XPlexContainerStart { get; set; } public int? XPlexContainerStart { get; set; } = 0;
/// <summary> /// <summary>
/// The number of items to return. If not specified, all items will be returned.<br/> /// The number of items to return. If not specified, all items will be returned.<br/>
/// ///
/// <remarks> /// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/> /// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 50<br/>
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")]
public int? XPlexContainerSize { get; set; } public int? XPlexContainerSize { get; set; } = 50;
} }
} }

View File

@@ -14,7 +14,7 @@ namespace PlexAPI.Models.Requests
using System.Net.Http; using System.Net.Http;
using System; using System;
public class GetWatchlistResponse public class GetWatchListResponse
{ {
/// <summary> /// <summary>
@@ -35,6 +35,6 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// Watchlist Data /// Watchlist Data
/// </summary> /// </summary>
public Models.Requests.GetWatchlistResponseBody? Object { get; set; } public Models.Requests.GetWatchListResponseBody? Object { get; set; }
} }
} }

View File

@@ -17,7 +17,7 @@ namespace PlexAPI.Models.Requests
/// <summary> /// <summary>
/// Watchlist Data /// Watchlist Data
/// </summary> /// </summary>
public class GetWatchlistResponseBody public class GetWatchListResponseBody
{ {
[JsonProperty("librarySectionID")] [JsonProperty("librarySectionID")]

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
/// <summary>
/// Adds the Guids object to the response<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
public enum IncludeGuids
{
Zero = 0,
One = 1,
}
}

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
/// <summary>
/// Adds the Meta object to the response<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
public enum IncludeMeta
{
Zero = 0,
One = 1,
}
}

View File

@@ -12,7 +12,12 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
/// <summary> /// <summary>
/// Include Relay addresses in the results /// Include Relay addresses in the results <br/>
///
/// <remarks>
/// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/>
///
/// </remarks>
/// </summary> /// </summary>
public enum IncludeRelay public enum IncludeRelay
{ {

View File

@@ -0,0 +1,35 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using Newtonsoft.Json;
using PlexAPI.Models.Requests;
using PlexAPI.Utils;
using System.Collections.Generic;
public class MediaProvider
{
[JsonProperty("identifier")]
public string? Identifier { get; set; }
[JsonProperty("title")]
public string? Title { get; set; }
[JsonProperty("types")]
public string? Types { get; set; }
[JsonProperty("protocols")]
public string? Protocols { get; set; }
[JsonProperty("Feature")]
public List<Feature>? Feature { get; set; }
}
}

View File

@@ -0,0 +1,36 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using Newtonsoft.Json;
using PlexAPI.Utils;
public class Pivot
{
[JsonProperty("id")]
public string? Id { get; set; }
[JsonProperty("key")]
public string? Key { get; set; }
[JsonProperty("type")]
public string? Type { get; set; }
[JsonProperty("title")]
public string? Title { get; set; }
[JsonProperty("context")]
public string? Context { get; set; }
[JsonProperty("symbol")]
public string? Symbol { get; set; }
}
}

View File

@@ -27,14 +27,14 @@ namespace PlexAPI.Models.Requests
[JsonProperty("productVersion")] [JsonProperty("productVersion")]
public string ProductVersion { get; set; } = default!; public string ProductVersion { get; set; } = default!;
[JsonProperty("platform")] [JsonProperty("platform", NullValueHandling = NullValueHandling.Include)]
public string Platform { get; set; } = default!; public string? Platform { get; set; }
[JsonProperty("platformVersion")] [JsonProperty("platformVersion", NullValueHandling = NullValueHandling.Include)]
public string PlatformVersion { get; set; } = default!; public string? PlatformVersion { get; set; }
[JsonProperty("device")] [JsonProperty("device", NullValueHandling = NullValueHandling.Include)]
public string Device { get; set; } = default!; public string? Device { get; set; }
[JsonProperty("clientIdentifier")] [JsonProperty("clientIdentifier")]
public string ClientIdentifier { get; set; } = default!; public string ClientIdentifier { get; set; } = default!;
@@ -48,46 +48,49 @@ namespace PlexAPI.Models.Requests
[JsonProperty("provides")] [JsonProperty("provides")]
public string Provides { get; set; } = default!; public string Provides { get; set; } = default!;
[JsonProperty("ownerId")] /// <summary>
public string? OwnerId { get; set; } /// ownerId is null when the device is owned by the token used to send the request
/// </summary>
[JsonProperty("ownerId", NullValueHandling = NullValueHandling.Include)]
public long? OwnerId { get; set; }
[JsonProperty("sourceTitle")] [JsonProperty("sourceTitle", NullValueHandling = NullValueHandling.Include)]
public string? SourceTitle { get; set; } public string? SourceTitle { get; set; }
[JsonProperty("publicAddress")] [JsonProperty("publicAddress")]
public string? PublicAddress { get; set; } public string PublicAddress { get; set; } = default!;
[JsonProperty("accessToken")] [JsonProperty("accessToken")]
public string? AccessToken { get; set; } public string AccessToken { get; set; } = default!;
[JsonProperty("owned")] [JsonProperty("owned")]
public bool? Owned { get; set; } public bool Owned { get; set; } = default!;
[JsonProperty("home")] [JsonProperty("home")]
public bool? Home { get; set; } public bool Home { get; set; } = default!;
[JsonProperty("synced")] [JsonProperty("synced")]
public bool? Synced { get; set; } public bool Synced { get; set; } = default!;
[JsonProperty("relay")] [JsonProperty("relay")]
public bool? Relay { get; set; } public bool Relay { get; set; } = default!;
[JsonProperty("presence")] [JsonProperty("presence")]
public bool? Presence { get; set; } public bool Presence { get; set; } = default!;
[JsonProperty("httpsRequired")] [JsonProperty("httpsRequired")]
public bool? HttpsRequired { get; set; } public bool HttpsRequired { get; set; } = default!;
[JsonProperty("publicAddressMatches")] [JsonProperty("publicAddressMatches")]
public bool? PublicAddressMatches { get; set; } public bool PublicAddressMatches { get; set; } = default!;
[JsonProperty("dnsRebindingProtection")] [JsonProperty("dnsRebindingProtection")]
public bool? DnsRebindingProtection { get; set; } public bool DnsRebindingProtection { get; set; } = default!;
[JsonProperty("natLoopbackSupported")] [JsonProperty("natLoopbackSupported")]
public bool? NatLoopbackSupported { get; set; } public bool NatLoopbackSupported { get; set; } = default!;
[JsonProperty("connections")] [JsonProperty("connections")]
public List<Connections>? Connections { get; set; } public List<Connections> Connections { get; set; } = default!;
} }
} }

View File

@@ -24,7 +24,7 @@ namespace PlexAPI.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")]
public string? XPlexClientIdentifier { get; set; } public string? XPlexClientIdentifier { get; set; }
/// <summary> /// <summary>

View File

@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace PlexAPI.Models.Requests
{
using PlexAPI.Utils;
/// <summary>
/// Filters content by field and direction/equality<br/>
///
/// <remarks>
/// (Unknown if viewedAt is the only supported column)<br/>
///
/// </remarks>
/// </summary>
public class QueryParamFilter
{
}
}

View File

@@ -9,54 +9,26 @@
#nullable enable #nullable enable
namespace PlexAPI.Models.Requests namespace PlexAPI.Models.Requests
{ {
using Newtonsoft.Json;
using PlexAPI.Utils; using PlexAPI.Utils;
using System;
/// <summary> /// <summary>
/// type of playlist to create /// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary> /// </summary>
public enum QueryParamType public enum QueryParamType
{ {
[JsonProperty("audio")] One = 1,
Audio, Two = 2,
[JsonProperty("video")] Three = 3,
Video, Four = 4,
[JsonProperty("photo")]
Photo,
}
public static class QueryParamTypeExtension
{
public static string Value(this QueryParamType value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static QueryParamType ToEnum(this string value)
{
foreach(var field in typeof(QueryParamType).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is QueryParamType)
{
return (QueryParamType)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum QueryParamType");
}
} }
} }

View File

@@ -12,7 +12,7 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
/// <summary> /// <summary>
/// Indicate that the latest version should be marked as skipped. The &lt;Release&gt; entry for this version will have the `state` set to `skipped`. /// Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`.
/// </summary> /// </summary>
public enum Skip public enum Skip
{ {

View File

@@ -42,7 +42,7 @@ namespace PlexAPI.Models.Requests
/// String representation of subscriptionActive /// String representation of subscriptionActive
/// </summary> /// </summary>
[JsonProperty("status")] [JsonProperty("status")]
public GetUserDetailsPlexStatus? Status { get; set; } public GetUserDetailsAuthenticationStatus? Status { get; set; }
/// <summary> /// <summary>
/// Payment service used for your Plex Pass subscription /// Payment service used for your Plex Pass subscription

View File

@@ -12,7 +12,16 @@ namespace PlexAPI.Models.Requests
using PlexAPI.Utils; using PlexAPI.Utils;
/// <summary> /// <summary>
/// Plex content type to search for /// The type of media to retrieve.<br/>
///
/// <remarks>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary> /// </summary>
public enum Type public enum Type
{ {

Some files were not shown because too many files have changed in this diff Show More