From d69f35d5898247a0e4abf2b7ba3b34f43de1ca2f Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Mon, 1 Jan 2024 14:37:30 +0000 Subject: [PATCH] ci: regenerated with OpenAPI Doc 0.0.3, Speakeasy CLI 1.129.1 --- .gitattributes | 2 + .gitignore | 3 + PlexAPI.sln | 17 + PlexAPI/Activities.cs | 183 +++++ PlexAPI/Butler.cs | 334 ++++++++ PlexAPI/Hubs.cs | 170 ++++ PlexAPI/Library.cs | 743 ++++++++++++++++++ PlexAPI/Log.cs | 216 +++++ PlexAPI/Media.cs | 222 ++++++ PlexAPI/Models/Components/Security.cs | 21 + PlexAPI/Models/Requests/Activity.cs | 42 + .../Requests/AddPlaylistContentsErrors.cs | 27 + .../Requests/AddPlaylistContentsRequest.cs | 36 + .../Requests/AddPlaylistContentsResponse.cs | 39 + .../AddPlaylistContentsResponseBody.cs | 25 + PlexAPI/Models/Requests/ApplyUpdatesErrors.cs | 27 + .../Models/Requests/ApplyUpdatesRequest.cs | 30 + .../Models/Requests/ApplyUpdatesResponse.cs | 39 + .../Requests/ApplyUpdatesResponseBody.cs | 25 + PlexAPI/Models/Requests/ButlerTask.cs | 36 + PlexAPI/Models/Requests/ButlerTasks.cs | 22 + .../Requests/CancelServerActivitiesErrors.cs | 27 + .../Requests/CancelServerActivitiesRequest.cs | 24 + .../CancelServerActivitiesResponse.cs | 39 + .../CancelServerActivitiesResponseBody.cs | 25 + .../Models/Requests/CheckForUpdatesErrors.cs | 27 + .../Models/Requests/CheckForUpdatesRequest.cs | 24 + .../Requests/CheckForUpdatesResponse.cs | 39 + .../Requests/CheckForUpdatesResponseBody.cs | 25 + .../Requests/ClearPlaylistContentsErrors.cs | 27 + .../Requests/ClearPlaylistContentsRequest.cs | 24 + .../Requests/ClearPlaylistContentsResponse.cs | 39 + .../ClearPlaylistContentsResponseBody.cs | 25 + PlexAPI/Models/Requests/Context.cs | 21 + PlexAPI/Models/Requests/Country.cs | 21 + .../Models/Requests/CreatePlaylistErrors.cs | 27 + .../Models/Requests/CreatePlaylistRequest.cs | 48 ++ .../Models/Requests/CreatePlaylistResponse.cs | 39 + .../Requests/CreatePlaylistResponseBody.cs | 25 + .../Models/Requests/DeleteLibraryErrors.cs | 27 + .../Models/Requests/DeleteLibraryRequest.cs | 24 + .../Models/Requests/DeleteLibraryResponse.cs | 39 + .../Requests/DeleteLibraryResponseBody.cs | 25 + .../Models/Requests/DeletePlaylistErrors.cs | 27 + .../Models/Requests/DeletePlaylistRequest.cs | 24 + .../Models/Requests/DeletePlaylistResponse.cs | 39 + .../Requests/DeletePlaylistResponseBody.cs | 25 + PlexAPI/Models/Requests/Device.cs | 33 + PlexAPI/Models/Requests/Director.cs | 21 + PlexAPI/Models/Requests/Directory.cs | 27 + PlexAPI/Models/Requests/Download.cs | 22 + .../Models/Requests/EnablePaperTrailErrors.cs | 27 + .../Requests/EnablePaperTrailResponse.cs | 39 + .../Requests/EnablePaperTrailResponseBody.cs | 25 + PlexAPI/Models/Requests/Errors.cs | 27 + PlexAPI/Models/Requests/Force.cs | 27 + PlexAPI/Models/Requests/Genre.cs | 21 + .../Requests/GetAvailableClientsErrors.cs | 27 + .../GetAvailableClientsMediaContainer.cs | 25 + .../Requests/GetAvailableClientsResponse.cs | 45 ++ .../GetAvailableClientsResponseBody.cs | 25 + .../GetButlerTasksButlerResponseBody.cs | 25 + .../Models/Requests/GetButlerTasksErrors.cs | 27 + .../Models/Requests/GetButlerTasksResponse.cs | 44 ++ .../Requests/GetButlerTasksResponseBody.cs | 24 + .../Requests/GetCommonLibraryItemsErrors.cs | 27 + .../Requests/GetCommonLibraryItemsRequest.cs | 36 + .../Requests/GetCommonLibraryItemsResponse.cs | 39 + .../GetCommonLibraryItemsResponseBody.cs | 25 + PlexAPI/Models/Requests/GetDevicesErrors.cs | 27 + .../Requests/GetDevicesMediaContainer.cs | 28 + PlexAPI/Models/Requests/GetDevicesResponse.cs | 44 ++ .../Models/Requests/GetDevicesResponseBody.cs | 24 + .../Requests/GetDevicesServerResponseBody.cs | 25 + PlexAPI/Models/Requests/GetFileHashErrors.cs | 27 + PlexAPI/Models/Requests/GetFileHashRequest.cs | 30 + .../Models/Requests/GetFileHashResponse.cs | 39 + .../Requests/GetFileHashResponseBody.cs | 25 + .../Models/Requests/GetGlobalHubsErrors.cs | 27 + .../Models/Requests/GetGlobalHubsRequest.cs | 30 + .../Models/Requests/GetGlobalHubsResponse.cs | 39 + .../Requests/GetGlobalHubsResponseBody.cs | 25 + .../Requests/GetLatestLibraryItemsErrors.cs | 27 + .../Requests/GetLatestLibraryItemsRequest.cs | 36 + .../Requests/GetLatestLibraryItemsResponse.cs | 39 + .../GetLatestLibraryItemsResponseBody.cs | 25 + PlexAPI/Models/Requests/GetLibrariesErrors.cs | 27 + .../Models/Requests/GetLibrariesResponse.cs | 39 + .../Requests/GetLibrariesResponseBody.cs | 25 + PlexAPI/Models/Requests/GetLibraryErrors.cs | 27 + .../Models/Requests/GetLibraryHubsErrors.cs | 27 + .../Models/Requests/GetLibraryHubsRequest.cs | 36 + .../Models/Requests/GetLibraryHubsResponse.cs | 39 + .../Requests/GetLibraryHubsResponseBody.cs | 25 + .../Models/Requests/GetLibraryItemsErrors.cs | 27 + .../Models/Requests/GetLibraryItemsRequest.cs | 36 + .../Requests/GetLibraryItemsResponse.cs | 39 + .../Requests/GetLibraryItemsResponseBody.cs | 25 + PlexAPI/Models/Requests/GetLibraryRequest.cs | 35 + PlexAPI/Models/Requests/GetLibraryResponse.cs | 39 + .../Models/Requests/GetLibraryResponseBody.cs | 25 + .../Requests/GetMetadataChildrenErrors.cs | 27 + .../Requests/GetMetadataChildrenRequest.cs | 24 + .../Requests/GetMetadataChildrenResponse.cs | 39 + .../GetMetadataChildrenResponseBody.cs | 25 + PlexAPI/Models/Requests/GetMetadataErrors.cs | 27 + PlexAPI/Models/Requests/GetMetadataRequest.cs | 24 + .../Models/Requests/GetMetadataResponse.cs | 39 + .../Requests/GetMetadataResponseBody.cs | 25 + .../Models/Requests/GetMyPlexAccountErrors.cs | 27 + .../Requests/GetMyPlexAccountResponse.cs | 44 ++ .../Requests/GetMyPlexAccountResponseBody.cs | 24 + .../GetMyPlexAccountServerResponseBody.cs | 25 + PlexAPI/Models/Requests/GetOnDeckErrors.cs | 27 + .../Requests/GetOnDeckLibraryResponseBody.cs | 25 + PlexAPI/Models/Requests/GetOnDeckMedia.cs | 64 ++ .../Requests/GetOnDeckMediaContainer.cs | 40 + PlexAPI/Models/Requests/GetOnDeckMetadata.cs | 128 +++ PlexAPI/Models/Requests/GetOnDeckPart.cs | 46 ++ PlexAPI/Models/Requests/GetOnDeckResponse.cs | 44 ++ .../Models/Requests/GetOnDeckResponseBody.cs | 24 + .../Requests/GetPlaylistContentsErrors.cs | 27 + .../Requests/GetPlaylistContentsRequest.cs | 30 + .../Requests/GetPlaylistContentsResponse.cs | 39 + .../GetPlaylistContentsResponseBody.cs | 25 + PlexAPI/Models/Requests/GetPlaylistErrors.cs | 27 + PlexAPI/Models/Requests/GetPlaylistRequest.cs | 24 + .../Models/Requests/GetPlaylistResponse.cs | 39 + .../Requests/GetPlaylistResponseBody.cs | 25 + PlexAPI/Models/Requests/GetPlaylistsErrors.cs | 27 + .../Models/Requests/GetPlaylistsRequest.cs | 30 + .../Models/Requests/GetPlaylistsResponse.cs | 39 + .../Requests/GetPlaylistsResponseBody.cs | 25 + .../Models/Requests/GetRecentlyAddedErrors.cs | 27 + .../GetRecentlyAddedLibraryResponseBody.cs | 25 + .../GetRecentlyAddedMediaContainer.cs | 40 + .../Requests/GetRecentlyAddedResponse.cs | 44 ++ .../Requests/GetRecentlyAddedResponseBody.cs | 24 + .../Models/Requests/GetResizedPhotoErrors.cs | 27 + .../Models/Requests/GetResizedPhotoRequest.cs | 60 ++ .../Requests/GetResizedPhotoResponse.cs | 39 + .../Requests/GetResizedPhotoResponseBody.cs | 25 + .../Requests/GetSearchResultsCountry.cs | 21 + .../Requests/GetSearchResultsDirector.cs | 21 + .../Models/Requests/GetSearchResultsErrors.cs | 27 + .../Models/Requests/GetSearchResultsGenre.cs | 21 + .../Models/Requests/GetSearchResultsMedia.cs | 64 ++ .../GetSearchResultsMediaContainer.cs | 37 + .../Requests/GetSearchResultsMetadata.cs | 122 +++ .../Models/Requests/GetSearchResultsPart.cs | 42 + .../Requests/GetSearchResultsRequest.cs | 24 + .../Requests/GetSearchResultsResponse.cs | 44 ++ .../Requests/GetSearchResultsResponseBody.cs | 24 + .../Models/Requests/GetSearchResultsRole.cs | 21 + .../GetSearchResultsSearchResponseBody.cs | 25 + .../Models/Requests/GetSearchResultsWriter.cs | 21 + ...tServerActivitiesActivitiesResponseBody.cs | 25 + .../Requests/GetServerActivitiesErrors.cs | 27 + .../GetServerActivitiesMediaContainer.cs | 25 + .../Requests/GetServerActivitiesResponse.cs | 44 ++ .../GetServerActivitiesResponseBody.cs | 24 + .../Requests/GetServerCapabilitiesResponse.cs | 44 ++ .../GetServerCapabilitiesResponseBody.cs | 24 + ...GetServerCapabilitiesServerResponseBody.cs | 25 + .../Requests/GetServerIdentityErrors.cs | 27 + .../GetServerIdentityMediaContainer.cs | 30 + .../Requests/GetServerIdentityResponse.cs | 44 ++ .../Requests/GetServerIdentityResponseBody.cs | 24 + .../GetServerIdentityServerResponseBody.cs | 25 + .../Models/Requests/GetServerListErrors.cs | 27 + .../Requests/GetServerListMediaContainer.cs | 25 + .../Models/Requests/GetServerListResponse.cs | 44 ++ .../Requests/GetServerListResponseBody.cs | 24 + .../Models/Requests/GetServerListServer.cs | 36 + .../GetServerListServerResponseBody.cs | 25 + .../Requests/GetServerPreferencesErrors.cs | 27 + .../Requests/GetServerPreferencesResponse.cs | 39 + .../GetServerPreferencesResponseBody.cs | 25 + .../Requests/GetSessionHistoryErrors.cs | 27 + .../Requests/GetSessionHistoryResponse.cs | 39 + .../Requests/GetSessionHistoryResponseBody.cs | 25 + PlexAPI/Models/Requests/GetSessionsErrors.cs | 27 + .../Models/Requests/GetSessionsResponse.cs | 39 + .../Requests/GetSessionsResponseBody.cs | 25 + .../GetSourceConnectionInformationErrors.cs | 27 + .../GetSourceConnectionInformationRequest.cs | 24 + .../GetSourceConnectionInformationResponse.cs | 39 + ...SourceConnectionInformationResponseBody.cs | 25 + PlexAPI/Models/Requests/GetTimelineErrors.cs | 27 + PlexAPI/Models/Requests/GetTimelineRequest.cs | 78 ++ .../Models/Requests/GetTimelineResponse.cs | 39 + .../Requests/GetTimelineResponseBody.cs | 25 + .../Requests/GetTranscodeSessionsErrors.cs | 27 + .../GetTranscodeSessionsMediaContainer.cs | 25 + .../Requests/GetTranscodeSessionsResponse.cs | 44 ++ .../GetTranscodeSessionsResponseBody.cs | 24 + ...etTranscodeSessionsSessionsResponseBody.cs | 25 + .../Requests/GetTransientTokenErrors.cs | 27 + .../Requests/GetTransientTokenRequest.cs | 30 + .../Requests/GetTransientTokenResponse.cs | 39 + .../Requests/GetTransientTokenResponseBody.cs | 25 + .../Models/Requests/GetUpdateStatusErrors.cs | 27 + .../Requests/GetUpdateStatusResponse.cs | 39 + .../Requests/GetUpdateStatusResponseBody.cs | 25 + PlexAPI/Models/Requests/Guids.cs | 21 + PlexAPI/Models/Requests/IncludeDetails.cs | 27 + PlexAPI/Models/Requests/Level.cs | 34 + PlexAPI/Models/Requests/LogLineErrors.cs | 27 + PlexAPI/Models/Requests/LogLineRequest.cs | 45 ++ PlexAPI/Models/Requests/LogLineResponse.cs | 39 + .../Models/Requests/LogLineResponseBody.cs | 25 + PlexAPI/Models/Requests/LogMultiLineErrors.cs | 27 + .../Models/Requests/LogMultiLineResponse.cs | 39 + .../Requests/LogMultiLineResponseBody.cs | 25 + PlexAPI/Models/Requests/MarkPlayedErrors.cs | 27 + PlexAPI/Models/Requests/MarkPlayedRequest.cs | 24 + PlexAPI/Models/Requests/MarkPlayedResponse.cs | 39 + .../Models/Requests/MarkPlayedResponseBody.cs | 25 + PlexAPI/Models/Requests/MarkUnplayedErrors.cs | 27 + .../Models/Requests/MarkUnplayedRequest.cs | 24 + .../Models/Requests/MarkUnplayedResponse.cs | 39 + .../Requests/MarkUnplayedResponseBody.cs | 25 + PlexAPI/Models/Requests/Media.cs | 67 ++ PlexAPI/Models/Requests/MediaContainer.cs | 172 ++++ PlexAPI/Models/Requests/Metadata.cs | 116 +++ PlexAPI/Models/Requests/MinSize.cs | 22 + PlexAPI/Models/Requests/MyPlex.cs | 54 ++ PlexAPI/Models/Requests/OnlyTransient.cs | 22 + PlexAPI/Models/Requests/Part.cs | 48 ++ PlexAPI/Models/Requests/PathParamTaskName.cs | 83 ++ .../Models/Requests/PerformSearchErrors.cs | 27 + .../Models/Requests/PerformSearchRequest.cs | 36 + .../Models/Requests/PerformSearchResponse.cs | 39 + .../Requests/PerformSearchResponseBody.cs | 25 + .../Requests/PerformVoiceSearchErrors.cs | 27 + .../Requests/PerformVoiceSearchRequest.cs | 36 + .../Requests/PerformVoiceSearchResponse.cs | 39 + .../PerformVoiceSearchResponseBody.cs | 25 + PlexAPI/Models/Requests/PlaylistType.cs | 61 ++ PlexAPI/Models/Requests/Provider.cs | 27 + .../Requests/QueryParamOnlyTransient.cs | 22 + PlexAPI/Models/Requests/QueryParamSmart.cs | 22 + PlexAPI/Models/Requests/QueryParamType.cs | 57 ++ .../Models/Requests/RefreshLibraryErrors.cs | 27 + .../Models/Requests/RefreshLibraryRequest.cs | 24 + .../Models/Requests/RefreshLibraryResponse.cs | 39 + .../Requests/RefreshLibraryResponseBody.cs | 25 + PlexAPI/Models/Requests/ResponseBody.cs | 21 + PlexAPI/Models/Requests/Role.cs | 21 + PlexAPI/Models/Requests/Scope.cs | 57 ++ PlexAPI/Models/Requests/Server.cs | 51 ++ PlexAPI/Models/Requests/Skip.cs | 22 + PlexAPI/Models/Requests/Smart.cs | 22 + .../Models/Requests/StartAllTasksErrors.cs | 27 + .../Models/Requests/StartAllTasksResponse.cs | 39 + .../Requests/StartAllTasksResponseBody.cs | 25 + PlexAPI/Models/Requests/StartTaskErrors.cs | 27 + PlexAPI/Models/Requests/StartTaskRequest.cs | 24 + PlexAPI/Models/Requests/StartTaskResponse.cs | 39 + .../Models/Requests/StartTaskResponseBody.cs | 25 + .../Requests/StartUniversalTranscodeErrors.cs | 27 + .../StartUniversalTranscodeRequest.cs | 114 +++ .../StartUniversalTranscodeResponse.cs | 39 + .../StartUniversalTranscodeResponseBody.cs | 25 + PlexAPI/Models/Requests/State.cs | 61 ++ PlexAPI/Models/Requests/StopAllTasksErrors.cs | 27 + .../Models/Requests/StopAllTasksResponse.cs | 39 + .../Requests/StopAllTasksResponseBody.cs | 25 + PlexAPI/Models/Requests/StopTaskErrors.cs | 27 + PlexAPI/Models/Requests/StopTaskRequest.cs | 24 + PlexAPI/Models/Requests/StopTaskResponse.cs | 39 + .../Models/Requests/StopTaskResponseBody.cs | 25 + .../Requests/StopTranscodeSessionErrors.cs | 27 + .../Requests/StopTranscodeSessionRequest.cs | 24 + .../Requests/StopTranscodeSessionResponse.cs | 39 + .../StopTranscodeSessionResponseBody.cs | 25 + PlexAPI/Models/Requests/Stream.cs | 87 ++ PlexAPI/Models/Requests/TaskName.cs | 83 ++ PlexAPI/Models/Requests/Tonight.cs | 22 + PlexAPI/Models/Requests/TranscodeSession.cs | 84 ++ PlexAPI/Models/Requests/Type.cs | 61 ++ .../Requests/UpdatePlayProgressErrors.cs | 27 + .../Requests/UpdatePlayProgressRequest.cs | 36 + .../Requests/UpdatePlayProgressResponse.cs | 39 + .../UpdatePlayProgressResponseBody.cs | 25 + .../Models/Requests/UpdatePlaylistErrors.cs | 27 + .../Models/Requests/UpdatePlaylistRequest.cs | 24 + .../Models/Requests/UpdatePlaylistResponse.cs | 39 + .../Requests/UpdatePlaylistResponseBody.cs | 25 + .../Models/Requests/UploadPlaylistErrors.cs | 27 + .../Models/Requests/UploadPlaylistRequest.cs | 44 ++ .../Models/Requests/UploadPlaylistResponse.cs | 39 + .../Requests/UploadPlaylistResponseBody.cs | 25 + PlexAPI/Models/Requests/Upscale.cs | 22 + PlexAPI/Models/Requests/Writer.cs | 21 + PlexAPI/Playlists.cs | 559 +++++++++++++ PlexAPI/PlexAPI.csproj | 22 + PlexAPI/PlexAPISDK.cs | 309 ++++++++ PlexAPI/Search.cs | 248 ++++++ PlexAPI/Security.cs | 170 ++++ PlexAPI/Server.cs | 508 ++++++++++++ PlexAPI/Sessions.cs | 269 +++++++ PlexAPI/Updater.cs | 219 ++++++ PlexAPI/Utils/BigIntSerializer.cs | 50 ++ PlexAPI/Utils/DecimalSerializer.cs | 49 ++ PlexAPI/Utils/EnumSerializer.cs | 67 ++ PlexAPI/Utils/FlexibleObjectDeserializer.cs | 44 ++ PlexAPI/Utils/HeaderSerializer.cs | 129 +++ PlexAPI/Utils/IsoDateTimeSerializer.cs | 41 + PlexAPI/Utils/RequestBodySerializer.cs | 502 ++++++++++++ PlexAPI/Utils/SecuritySerializer.cs | 227 ++++++ PlexAPI/Utils/SpeakeasyHttpClient.cs | 96 +++ PlexAPI/Utils/SpeakeasyMetadata.cs | 243 ++++++ PlexAPI/Utils/URLBuilder.cs | 589 ++++++++++++++ PlexAPI/Utils/Utilities.cs | 241 ++++++ PlexAPI/Video.cs | 158 ++++ README.md | 193 +++++ RELEASES.md | 9 + USAGE.md | 15 + docs/Models/Components/Security.md | 8 + docs/Models/Requests/Activity.md | 15 + .../Requests/AddPlaylistContentsErrors.md | 10 + .../Requests/AddPlaylistContentsRequest.md | 10 + .../Requests/AddPlaylistContentsResponse.md | 11 + .../AddPlaylistContentsResponseBody.md | 10 + docs/Models/Requests/ApplyUpdatesErrors.md | 10 + docs/Models/Requests/ApplyUpdatesRequest.md | 9 + docs/Models/Requests/ApplyUpdatesResponse.md | 11 + .../Requests/ApplyUpdatesResponseBody.md | 10 + docs/Models/Requests/ButlerTask.md | 13 + docs/Models/Requests/ButlerTasks.md | 8 + .../Requests/CancelServerActivitiesErrors.md | 10 + .../Requests/CancelServerActivitiesRequest.md | 8 + .../CancelServerActivitiesResponse.md | 11 + .../CancelServerActivitiesResponseBody.md | 10 + docs/Models/Requests/CheckForUpdatesErrors.md | 10 + .../Models/Requests/CheckForUpdatesRequest.md | 8 + .../Requests/CheckForUpdatesResponse.md | 11 + .../Requests/CheckForUpdatesResponseBody.md | 10 + .../Requests/ClearPlaylistContentsErrors.md | 10 + .../Requests/ClearPlaylistContentsRequest.md | 8 + .../Requests/ClearPlaylistContentsResponse.md | 11 + .../ClearPlaylistContentsResponseBody.md | 10 + docs/Models/Requests/Context.md | 8 + docs/Models/Requests/Country.md | 8 + docs/Models/Requests/CreatePlaylistErrors.md | 10 + docs/Models/Requests/CreatePlaylistRequest.md | 12 + .../Models/Requests/CreatePlaylistResponse.md | 11 + .../Requests/CreatePlaylistResponseBody.md | 10 + docs/Models/Requests/DeleteLibraryErrors.md | 10 + docs/Models/Requests/DeleteLibraryRequest.md | 8 + docs/Models/Requests/DeleteLibraryResponse.md | 11 + .../Requests/DeleteLibraryResponseBody.md | 10 + docs/Models/Requests/DeletePlaylistErrors.md | 10 + docs/Models/Requests/DeletePlaylistRequest.md | 8 + .../Models/Requests/DeletePlaylistResponse.md | 11 + .../Requests/DeletePlaylistResponseBody.md | 10 + docs/Models/Requests/Device.md | 12 + docs/Models/Requests/Director.md | 8 + docs/Models/Requests/Directory.md | 10 + docs/Models/Requests/Download.md | 11 + .../Models/Requests/EnablePaperTrailErrors.md | 10 + .../Requests/EnablePaperTrailResponse.md | 11 + .../Requests/EnablePaperTrailResponseBody.md | 10 + docs/Models/Requests/Errors.md | 10 + docs/Models/Requests/Force.md | 13 + docs/Models/Requests/Genre.md | 8 + .../Requests/GetAvailableClientsErrors.md | 10 + .../GetAvailableClientsMediaContainer.md | 9 + .../Requests/GetAvailableClientsResponse.md | 12 + .../GetAvailableClientsResponseBody.md | 10 + .../GetButlerTasksButlerResponseBody.md | 10 + docs/Models/Requests/GetButlerTasksErrors.md | 10 + .../Models/Requests/GetButlerTasksResponse.md | 12 + .../Requests/GetButlerTasksResponseBody.md | 10 + .../Requests/GetCommonLibraryItemsErrors.md | 10 + .../Requests/GetCommonLibraryItemsRequest.md | 10 + .../Requests/GetCommonLibraryItemsResponse.md | 11 + .../GetCommonLibraryItemsResponseBody.md | 10 + docs/Models/Requests/GetDevicesErrors.md | 10 + .../Requests/GetDevicesMediaContainer.md | 10 + docs/Models/Requests/GetDevicesResponse.md | 12 + .../Models/Requests/GetDevicesResponseBody.md | 10 + .../Requests/GetDevicesServerResponseBody.md | 10 + docs/Models/Requests/GetFileHashErrors.md | 10 + docs/Models/Requests/GetFileHashRequest.md | 9 + docs/Models/Requests/GetFileHashResponse.md | 11 + .../Requests/GetFileHashResponseBody.md | 10 + docs/Models/Requests/GetGlobalHubsErrors.md | 10 + docs/Models/Requests/GetGlobalHubsRequest.md | 9 + docs/Models/Requests/GetGlobalHubsResponse.md | 11 + .../Requests/GetGlobalHubsResponseBody.md | 10 + .../Requests/GetLatestLibraryItemsErrors.md | 10 + .../Requests/GetLatestLibraryItemsRequest.md | 10 + .../Requests/GetLatestLibraryItemsResponse.md | 11 + .../GetLatestLibraryItemsResponseBody.md | 10 + docs/Models/Requests/GetLibrariesErrors.md | 10 + docs/Models/Requests/GetLibrariesResponse.md | 11 + .../Requests/GetLibrariesResponseBody.md | 10 + docs/Models/Requests/GetLibraryErrors.md | 10 + docs/Models/Requests/GetLibraryHubsErrors.md | 10 + docs/Models/Requests/GetLibraryHubsRequest.md | 10 + .../Models/Requests/GetLibraryHubsResponse.md | 11 + .../Requests/GetLibraryHubsResponseBody.md | 10 + docs/Models/Requests/GetLibraryItemsErrors.md | 10 + .../Models/Requests/GetLibraryItemsRequest.md | 10 + .../Requests/GetLibraryItemsResponse.md | 11 + .../Requests/GetLibraryItemsResponseBody.md | 10 + docs/Models/Requests/GetLibraryRequest.md | 9 + docs/Models/Requests/GetLibraryResponse.md | 11 + .../Models/Requests/GetLibraryResponseBody.md | 10 + .../Requests/GetMetadataChildrenErrors.md | 10 + .../Requests/GetMetadataChildrenRequest.md | 8 + .../Requests/GetMetadataChildrenResponse.md | 11 + .../GetMetadataChildrenResponseBody.md | 10 + docs/Models/Requests/GetMetadataErrors.md | 10 + docs/Models/Requests/GetMetadataRequest.md | 8 + docs/Models/Requests/GetMetadataResponse.md | 11 + .../Requests/GetMetadataResponseBody.md | 10 + .../Models/Requests/GetMyPlexAccountErrors.md | 10 + .../Requests/GetMyPlexAccountResponse.md | 12 + .../Requests/GetMyPlexAccountResponseBody.md | 10 + .../GetMyPlexAccountServerResponseBody.md | 10 + docs/Models/Requests/GetOnDeckErrors.md | 10 + .../Requests/GetOnDeckLibraryResponseBody.md | 10 + docs/Models/Requests/GetOnDeckMedia.md | 22 + .../Requests/GetOnDeckMediaContainer.md | 14 + docs/Models/Requests/GetOnDeckMetadata.md | 43 + docs/Models/Requests/GetOnDeckPart.md | 16 + docs/Models/Requests/GetOnDeckResponse.md | 12 + docs/Models/Requests/GetOnDeckResponseBody.md | 10 + .../Requests/GetPlaylistContentsErrors.md | 10 + .../Requests/GetPlaylistContentsRequest.md | 9 + .../Requests/GetPlaylistContentsResponse.md | 11 + .../GetPlaylistContentsResponseBody.md | 10 + docs/Models/Requests/GetPlaylistErrors.md | 10 + docs/Models/Requests/GetPlaylistRequest.md | 8 + docs/Models/Requests/GetPlaylistResponse.md | 11 + .../Requests/GetPlaylistResponseBody.md | 10 + docs/Models/Requests/GetPlaylistsErrors.md | 10 + docs/Models/Requests/GetPlaylistsRequest.md | 9 + docs/Models/Requests/GetPlaylistsResponse.md | 11 + .../Requests/GetPlaylistsResponseBody.md | 10 + .../Models/Requests/GetRecentlyAddedErrors.md | 10 + .../GetRecentlyAddedLibraryResponseBody.md | 10 + .../GetRecentlyAddedMediaContainer.md | 14 + .../Requests/GetRecentlyAddedResponse.md | 12 + .../Requests/GetRecentlyAddedResponseBody.md | 10 + docs/Models/Requests/GetResizedPhotoErrors.md | 10 + .../Models/Requests/GetResizedPhotoRequest.md | 14 + .../Requests/GetResizedPhotoResponse.md | 11 + .../Requests/GetResizedPhotoResponseBody.md | 10 + .../Requests/GetSearchResultsCountry.md | 8 + .../Requests/GetSearchResultsDirector.md | 8 + .../Models/Requests/GetSearchResultsErrors.md | 10 + docs/Models/Requests/GetSearchResultsGenre.md | 8 + docs/Models/Requests/GetSearchResultsMedia.md | 22 + .../GetSearchResultsMediaContainer.md | 13 + .../Requests/GetSearchResultsMetadata.md | 41 + docs/Models/Requests/GetSearchResultsPart.md | 15 + .../Requests/GetSearchResultsRequest.md | 8 + .../Requests/GetSearchResultsResponse.md | 12 + .../Requests/GetSearchResultsResponseBody.md | 10 + docs/Models/Requests/GetSearchResultsRole.md | 8 + .../GetSearchResultsSearchResponseBody.md | 10 + .../Models/Requests/GetSearchResultsWriter.md | 8 + ...tServerActivitiesActivitiesResponseBody.md | 10 + .../Requests/GetServerActivitiesErrors.md | 10 + .../GetServerActivitiesMediaContainer.md | 9 + .../Requests/GetServerActivitiesResponse.md | 12 + .../GetServerActivitiesResponseBody.md | 10 + .../Requests/GetServerCapabilitiesResponse.md | 12 + .../GetServerCapabilitiesResponseBody.md | 10 + ...GetServerCapabilitiesServerResponseBody.md | 10 + .../Requests/GetServerIdentityErrors.md | 10 + .../GetServerIdentityMediaContainer.md | 11 + .../Requests/GetServerIdentityResponse.md | 12 + .../Requests/GetServerIdentityResponseBody.md | 10 + .../GetServerIdentityServerResponseBody.md | 10 + docs/Models/Requests/GetServerListErrors.md | 10 + .../Requests/GetServerListMediaContainer.md | 9 + docs/Models/Requests/GetServerListResponse.md | 12 + .../Requests/GetServerListResponseBody.md | 10 + docs/Models/Requests/GetServerListServer.md | 13 + .../GetServerListServerResponseBody.md | 10 + .../Requests/GetServerPreferencesErrors.md | 10 + .../Requests/GetServerPreferencesResponse.md | 11 + .../GetServerPreferencesResponseBody.md | 10 + .../Requests/GetSessionHistoryErrors.md | 10 + .../Requests/GetSessionHistoryResponse.md | 11 + .../Requests/GetSessionHistoryResponseBody.md | 10 + docs/Models/Requests/GetSessionsErrors.md | 10 + docs/Models/Requests/GetSessionsResponse.md | 11 + .../Requests/GetSessionsResponseBody.md | 10 + .../GetSourceConnectionInformationErrors.md | 10 + .../GetSourceConnectionInformationRequest.md | 8 + .../GetSourceConnectionInformationResponse.md | 11 + ...SourceConnectionInformationResponseBody.md | 10 + docs/Models/Requests/GetTimelineErrors.md | 10 + docs/Models/Requests/GetTimelineRequest.md | 17 + docs/Models/Requests/GetTimelineResponse.md | 11 + .../Requests/GetTimelineResponseBody.md | 10 + .../Requests/GetTranscodeSessionsErrors.md | 10 + .../GetTranscodeSessionsMediaContainer.md | 9 + .../Requests/GetTranscodeSessionsResponse.md | 12 + .../GetTranscodeSessionsResponseBody.md | 10 + ...etTranscodeSessionsSessionsResponseBody.md | 10 + .../Requests/GetTransientTokenErrors.md | 10 + .../Requests/GetTransientTokenRequest.md | 9 + .../Requests/GetTransientTokenResponse.md | 11 + .../Requests/GetTransientTokenResponseBody.md | 10 + docs/Models/Requests/GetUpdateStatusErrors.md | 10 + .../Requests/GetUpdateStatusResponse.md | 11 + .../Requests/GetUpdateStatusResponseBody.md | 10 + docs/Models/Requests/Guids.md | 8 + docs/Models/Requests/IncludeDetails.md | 13 + docs/Models/Requests/Level.md | 20 + docs/Models/Requests/LogLineErrors.md | 10 + docs/Models/Requests/LogLineRequest.md | 10 + docs/Models/Requests/LogLineResponse.md | 11 + docs/Models/Requests/LogLineResponseBody.md | 10 + docs/Models/Requests/LogMultiLineErrors.md | 10 + docs/Models/Requests/LogMultiLineResponse.md | 11 + .../Requests/LogMultiLineResponseBody.md | 10 + docs/Models/Requests/MarkPlayedErrors.md | 10 + docs/Models/Requests/MarkPlayedRequest.md | 8 + docs/Models/Requests/MarkPlayedResponse.md | 11 + .../Models/Requests/MarkPlayedResponseBody.md | 10 + docs/Models/Requests/MarkUnplayedErrors.md | 10 + docs/Models/Requests/MarkUnplayedRequest.md | 8 + docs/Models/Requests/MarkUnplayedResponse.md | 11 + .../Requests/MarkUnplayedResponseBody.md | 10 + docs/Models/Requests/Media.md | 23 + docs/Models/Requests/MediaContainer.md | 58 ++ docs/Models/Requests/Metadata.md | 39 + docs/Models/Requests/MinSize.md | 11 + docs/Models/Requests/MyPlex.md | 19 + docs/Models/Requests/OnlyTransient.md | 11 + docs/Models/Requests/Part.md | 17 + docs/Models/Requests/PathParamTaskName.md | 23 + docs/Models/Requests/PerformSearchErrors.md | 10 + docs/Models/Requests/PerformSearchRequest.md | 10 + docs/Models/Requests/PerformSearchResponse.md | 11 + .../Requests/PerformSearchResponseBody.md | 10 + .../Requests/PerformVoiceSearchErrors.md | 10 + .../Requests/PerformVoiceSearchRequest.md | 10 + .../Requests/PerformVoiceSearchResponse.md | 11 + .../PerformVoiceSearchResponseBody.md | 10 + docs/Models/Requests/PlaylistType.md | 12 + docs/Models/Requests/Provider.md | 10 + .../Requests/QueryParamOnlyTransient.md | 11 + docs/Models/Requests/QueryParamSmart.md | 11 + docs/Models/Requests/QueryParamType.md | 10 + docs/Models/Requests/RefreshLibraryErrors.md | 10 + docs/Models/Requests/RefreshLibraryRequest.md | 8 + .../Models/Requests/RefreshLibraryResponse.md | 11 + .../Requests/RefreshLibraryResponseBody.md | 10 + docs/Models/Requests/ResponseBody.md | 8 + docs/Models/Requests/Role.md | 8 + docs/Models/Requests/Scope.md | 10 + docs/Models/Requests/Server.md | 18 + docs/Models/Requests/Skip.md | 11 + docs/Models/Requests/Smart.md | 11 + docs/Models/Requests/StartAllTasksErrors.md | 10 + docs/Models/Requests/StartAllTasksResponse.md | 11 + .../Requests/StartAllTasksResponseBody.md | 10 + docs/Models/Requests/StartTaskErrors.md | 10 + docs/Models/Requests/StartTaskRequest.md | 8 + docs/Models/Requests/StartTaskResponse.md | 11 + docs/Models/Requests/StartTaskResponseBody.md | 10 + .../Requests/StartUniversalTranscodeErrors.md | 10 + .../StartUniversalTranscodeRequest.md | 23 + .../StartUniversalTranscodeResponse.md | 11 + .../StartUniversalTranscodeResponseBody.md | 10 + docs/Models/Requests/State.md | 12 + docs/Models/Requests/StopAllTasksErrors.md | 10 + docs/Models/Requests/StopAllTasksResponse.md | 11 + .../Requests/StopAllTasksResponseBody.md | 10 + docs/Models/Requests/StopTaskErrors.md | 10 + docs/Models/Requests/StopTaskRequest.md | 8 + docs/Models/Requests/StopTaskResponse.md | 11 + docs/Models/Requests/StopTaskResponseBody.md | 10 + .../Requests/StopTranscodeSessionErrors.md | 10 + .../Requests/StopTranscodeSessionRequest.md | 8 + .../Requests/StopTranscodeSessionResponse.md | 11 + .../StopTranscodeSessionResponseBody.md | 10 + docs/Models/Requests/Stream.md | 30 + docs/Models/Requests/TaskName.md | 23 + docs/Models/Requests/Tonight.md | 11 + docs/Models/Requests/TranscodeSession.md | 29 + docs/Models/Requests/Type.md | 12 + .../Requests/UpdatePlayProgressErrors.md | 10 + .../Requests/UpdatePlayProgressRequest.md | 10 + .../Requests/UpdatePlayProgressResponse.md | 11 + .../UpdatePlayProgressResponseBody.md | 10 + docs/Models/Requests/UpdatePlaylistErrors.md | 10 + docs/Models/Requests/UpdatePlaylistRequest.md | 8 + .../Models/Requests/UpdatePlaylistResponse.md | 11 + .../Requests/UpdatePlaylistResponseBody.md | 10 + docs/Models/Requests/UploadPlaylistErrors.md | 10 + docs/Models/Requests/UploadPlaylistRequest.md | 9 + .../Models/Requests/UploadPlaylistResponse.md | 11 + .../Requests/UploadPlaylistResponseBody.md | 10 + docs/Models/Requests/Upscale.md | 11 + docs/Models/Requests/Writer.md | 8 + docs/sdks/activities/README.md | 77 ++ docs/sdks/butler/README.md | 171 ++++ docs/sdks/hubs/README.md | 82 ++ docs/sdks/library/README.md | 438 +++++++++++ docs/sdks/log/README.md | 103 +++ docs/sdks/media/README.md | 115 +++ docs/sdks/playlists/README.md | 345 ++++++++ docs/sdks/plexapi/README.md | 9 + docs/sdks/search/README.md | 132 ++++ docs/sdks/security/README.md | 82 ++ docs/sdks/server/README.md | 244 ++++++ docs/sdks/sessions/README.md | 125 +++ docs/sdks/updater/README.md | 108 +++ docs/sdks/video/README.md | 99 +++ files.gen | 616 +++++++++++++++ gen.yaml | 20 +- 621 files changed, 22413 insertions(+), 3 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 PlexAPI.sln create mode 100644 PlexAPI/Activities.cs create mode 100644 PlexAPI/Butler.cs create mode 100644 PlexAPI/Hubs.cs create mode 100644 PlexAPI/Library.cs create mode 100644 PlexAPI/Log.cs create mode 100644 PlexAPI/Media.cs create mode 100644 PlexAPI/Models/Components/Security.cs create mode 100644 PlexAPI/Models/Requests/Activity.cs create mode 100644 PlexAPI/Models/Requests/AddPlaylistContentsErrors.cs create mode 100644 PlexAPI/Models/Requests/AddPlaylistContentsRequest.cs create mode 100644 PlexAPI/Models/Requests/AddPlaylistContentsResponse.cs create mode 100644 PlexAPI/Models/Requests/AddPlaylistContentsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/ApplyUpdatesErrors.cs create mode 100644 PlexAPI/Models/Requests/ApplyUpdatesRequest.cs create mode 100644 PlexAPI/Models/Requests/ApplyUpdatesResponse.cs create mode 100644 PlexAPI/Models/Requests/ApplyUpdatesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/ButlerTask.cs create mode 100644 PlexAPI/Models/Requests/ButlerTasks.cs create mode 100644 PlexAPI/Models/Requests/CancelServerActivitiesErrors.cs create mode 100644 PlexAPI/Models/Requests/CancelServerActivitiesRequest.cs create mode 100644 PlexAPI/Models/Requests/CancelServerActivitiesResponse.cs create mode 100644 PlexAPI/Models/Requests/CancelServerActivitiesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/CheckForUpdatesErrors.cs create mode 100644 PlexAPI/Models/Requests/CheckForUpdatesRequest.cs create mode 100644 PlexAPI/Models/Requests/CheckForUpdatesResponse.cs create mode 100644 PlexAPI/Models/Requests/CheckForUpdatesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/ClearPlaylistContentsErrors.cs create mode 100644 PlexAPI/Models/Requests/ClearPlaylistContentsRequest.cs create mode 100644 PlexAPI/Models/Requests/ClearPlaylistContentsResponse.cs create mode 100644 PlexAPI/Models/Requests/ClearPlaylistContentsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Context.cs create mode 100644 PlexAPI/Models/Requests/Country.cs create mode 100644 PlexAPI/Models/Requests/CreatePlaylistErrors.cs create mode 100644 PlexAPI/Models/Requests/CreatePlaylistRequest.cs create mode 100644 PlexAPI/Models/Requests/CreatePlaylistResponse.cs create mode 100644 PlexAPI/Models/Requests/CreatePlaylistResponseBody.cs create mode 100644 PlexAPI/Models/Requests/DeleteLibraryErrors.cs create mode 100644 PlexAPI/Models/Requests/DeleteLibraryRequest.cs create mode 100644 PlexAPI/Models/Requests/DeleteLibraryResponse.cs create mode 100644 PlexAPI/Models/Requests/DeleteLibraryResponseBody.cs create mode 100644 PlexAPI/Models/Requests/DeletePlaylistErrors.cs create mode 100644 PlexAPI/Models/Requests/DeletePlaylistRequest.cs create mode 100644 PlexAPI/Models/Requests/DeletePlaylistResponse.cs create mode 100644 PlexAPI/Models/Requests/DeletePlaylistResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Device.cs create mode 100644 PlexAPI/Models/Requests/Director.cs create mode 100644 PlexAPI/Models/Requests/Directory.cs create mode 100644 PlexAPI/Models/Requests/Download.cs create mode 100644 PlexAPI/Models/Requests/EnablePaperTrailErrors.cs create mode 100644 PlexAPI/Models/Requests/EnablePaperTrailResponse.cs create mode 100644 PlexAPI/Models/Requests/EnablePaperTrailResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Errors.cs create mode 100644 PlexAPI/Models/Requests/Force.cs create mode 100644 PlexAPI/Models/Requests/Genre.cs create mode 100644 PlexAPI/Models/Requests/GetAvailableClientsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetAvailableClientsMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetAvailableClientsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetAvailableClientsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetButlerTasksButlerResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetButlerTasksErrors.cs create mode 100644 PlexAPI/Models/Requests/GetButlerTasksResponse.cs create mode 100644 PlexAPI/Models/Requests/GetButlerTasksResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetCommonLibraryItemsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetCommonLibraryItemsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetCommonLibraryItemsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetCommonLibraryItemsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetDevicesErrors.cs create mode 100644 PlexAPI/Models/Requests/GetDevicesMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetDevicesResponse.cs create mode 100644 PlexAPI/Models/Requests/GetDevicesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetDevicesServerResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetFileHashErrors.cs create mode 100644 PlexAPI/Models/Requests/GetFileHashRequest.cs create mode 100644 PlexAPI/Models/Requests/GetFileHashResponse.cs create mode 100644 PlexAPI/Models/Requests/GetFileHashResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetGlobalHubsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetGlobalHubsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetGlobalHubsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetGlobalHubsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetLatestLibraryItemsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetLatestLibraryItemsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetLatestLibraryItemsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetLatestLibraryItemsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetLibrariesErrors.cs create mode 100644 PlexAPI/Models/Requests/GetLibrariesResponse.cs create mode 100644 PlexAPI/Models/Requests/GetLibrariesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryErrors.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryHubsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryHubsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryHubsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryHubsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryItemsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryItemsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryItemsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryItemsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryRequest.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryResponse.cs create mode 100644 PlexAPI/Models/Requests/GetLibraryResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataChildrenErrors.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataErrors.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataRequest.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataResponse.cs create mode 100644 PlexAPI/Models/Requests/GetMetadataResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetMyPlexAccountErrors.cs create mode 100644 PlexAPI/Models/Requests/GetMyPlexAccountResponse.cs create mode 100644 PlexAPI/Models/Requests/GetMyPlexAccountResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetMyPlexAccountServerResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckErrors.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckLibraryResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckMedia.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckMetadata.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckPart.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckResponse.cs create mode 100644 PlexAPI/Models/Requests/GetOnDeckResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistContentsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistContentsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistContentsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistErrors.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistRequest.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistResponse.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetPlaylistsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetRecentlyAddedErrors.cs create mode 100644 PlexAPI/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetRecentlyAddedMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetRecentlyAddedResponse.cs create mode 100644 PlexAPI/Models/Requests/GetRecentlyAddedResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetResizedPhotoErrors.cs create mode 100644 PlexAPI/Models/Requests/GetResizedPhotoRequest.cs create mode 100644 PlexAPI/Models/Requests/GetResizedPhotoResponse.cs create mode 100644 PlexAPI/Models/Requests/GetResizedPhotoResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsCountry.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsDirector.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsGenre.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsMedia.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsMetadata.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsPart.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsRequest.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsRole.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsSearchResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetSearchResultsWriter.cs create mode 100644 PlexAPI/Models/Requests/GetServerActivitiesActivitiesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerActivitiesErrors.cs create mode 100644 PlexAPI/Models/Requests/GetServerActivitiesMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetServerActivitiesResponse.cs create mode 100644 PlexAPI/Models/Requests/GetServerActivitiesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerCapabilitiesResponse.cs create mode 100644 PlexAPI/Models/Requests/GetServerCapabilitiesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerCapabilitiesServerResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerIdentityErrors.cs create mode 100644 PlexAPI/Models/Requests/GetServerIdentityMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetServerIdentityResponse.cs create mode 100644 PlexAPI/Models/Requests/GetServerIdentityResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerIdentityServerResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerListErrors.cs create mode 100644 PlexAPI/Models/Requests/GetServerListMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetServerListResponse.cs create mode 100644 PlexAPI/Models/Requests/GetServerListResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerListServer.cs create mode 100644 PlexAPI/Models/Requests/GetServerListServerResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetServerPreferencesErrors.cs create mode 100644 PlexAPI/Models/Requests/GetServerPreferencesResponse.cs create mode 100644 PlexAPI/Models/Requests/GetServerPreferencesResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetSessionHistoryErrors.cs create mode 100644 PlexAPI/Models/Requests/GetSessionHistoryResponse.cs create mode 100644 PlexAPI/Models/Requests/GetSessionHistoryResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetSessionsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetSessionsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetSessionsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetSourceConnectionInformationErrors.cs create mode 100644 PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs create mode 100644 PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs create mode 100644 PlexAPI/Models/Requests/GetSourceConnectionInformationResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetTimelineErrors.cs create mode 100644 PlexAPI/Models/Requests/GetTimelineRequest.cs create mode 100644 PlexAPI/Models/Requests/GetTimelineResponse.cs create mode 100644 PlexAPI/Models/Requests/GetTimelineResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetTranscodeSessionsErrors.cs create mode 100644 PlexAPI/Models/Requests/GetTranscodeSessionsMediaContainer.cs create mode 100644 PlexAPI/Models/Requests/GetTranscodeSessionsResponse.cs create mode 100644 PlexAPI/Models/Requests/GetTranscodeSessionsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetTranscodeSessionsSessionsResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetTransientTokenErrors.cs create mode 100644 PlexAPI/Models/Requests/GetTransientTokenRequest.cs create mode 100644 PlexAPI/Models/Requests/GetTransientTokenResponse.cs create mode 100644 PlexAPI/Models/Requests/GetTransientTokenResponseBody.cs create mode 100644 PlexAPI/Models/Requests/GetUpdateStatusErrors.cs create mode 100644 PlexAPI/Models/Requests/GetUpdateStatusResponse.cs create mode 100644 PlexAPI/Models/Requests/GetUpdateStatusResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Guids.cs create mode 100644 PlexAPI/Models/Requests/IncludeDetails.cs create mode 100644 PlexAPI/Models/Requests/Level.cs create mode 100644 PlexAPI/Models/Requests/LogLineErrors.cs create mode 100644 PlexAPI/Models/Requests/LogLineRequest.cs create mode 100644 PlexAPI/Models/Requests/LogLineResponse.cs create mode 100644 PlexAPI/Models/Requests/LogLineResponseBody.cs create mode 100644 PlexAPI/Models/Requests/LogMultiLineErrors.cs create mode 100644 PlexAPI/Models/Requests/LogMultiLineResponse.cs create mode 100644 PlexAPI/Models/Requests/LogMultiLineResponseBody.cs create mode 100644 PlexAPI/Models/Requests/MarkPlayedErrors.cs create mode 100644 PlexAPI/Models/Requests/MarkPlayedRequest.cs create mode 100644 PlexAPI/Models/Requests/MarkPlayedResponse.cs create mode 100644 PlexAPI/Models/Requests/MarkPlayedResponseBody.cs create mode 100644 PlexAPI/Models/Requests/MarkUnplayedErrors.cs create mode 100644 PlexAPI/Models/Requests/MarkUnplayedRequest.cs create mode 100644 PlexAPI/Models/Requests/MarkUnplayedResponse.cs create mode 100644 PlexAPI/Models/Requests/MarkUnplayedResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Media.cs create mode 100644 PlexAPI/Models/Requests/MediaContainer.cs create mode 100644 PlexAPI/Models/Requests/Metadata.cs create mode 100644 PlexAPI/Models/Requests/MinSize.cs create mode 100644 PlexAPI/Models/Requests/MyPlex.cs create mode 100644 PlexAPI/Models/Requests/OnlyTransient.cs create mode 100644 PlexAPI/Models/Requests/Part.cs create mode 100644 PlexAPI/Models/Requests/PathParamTaskName.cs create mode 100644 PlexAPI/Models/Requests/PerformSearchErrors.cs create mode 100644 PlexAPI/Models/Requests/PerformSearchRequest.cs create mode 100644 PlexAPI/Models/Requests/PerformSearchResponse.cs create mode 100644 PlexAPI/Models/Requests/PerformSearchResponseBody.cs create mode 100644 PlexAPI/Models/Requests/PerformVoiceSearchErrors.cs create mode 100644 PlexAPI/Models/Requests/PerformVoiceSearchRequest.cs create mode 100644 PlexAPI/Models/Requests/PerformVoiceSearchResponse.cs create mode 100644 PlexAPI/Models/Requests/PerformVoiceSearchResponseBody.cs create mode 100644 PlexAPI/Models/Requests/PlaylistType.cs create mode 100644 PlexAPI/Models/Requests/Provider.cs create mode 100644 PlexAPI/Models/Requests/QueryParamOnlyTransient.cs create mode 100644 PlexAPI/Models/Requests/QueryParamSmart.cs create mode 100644 PlexAPI/Models/Requests/QueryParamType.cs create mode 100644 PlexAPI/Models/Requests/RefreshLibraryErrors.cs create mode 100644 PlexAPI/Models/Requests/RefreshLibraryRequest.cs create mode 100644 PlexAPI/Models/Requests/RefreshLibraryResponse.cs create mode 100644 PlexAPI/Models/Requests/RefreshLibraryResponseBody.cs create mode 100644 PlexAPI/Models/Requests/ResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Role.cs create mode 100644 PlexAPI/Models/Requests/Scope.cs create mode 100644 PlexAPI/Models/Requests/Server.cs create mode 100644 PlexAPI/Models/Requests/Skip.cs create mode 100644 PlexAPI/Models/Requests/Smart.cs create mode 100644 PlexAPI/Models/Requests/StartAllTasksErrors.cs create mode 100644 PlexAPI/Models/Requests/StartAllTasksResponse.cs create mode 100644 PlexAPI/Models/Requests/StartAllTasksResponseBody.cs create mode 100644 PlexAPI/Models/Requests/StartTaskErrors.cs create mode 100644 PlexAPI/Models/Requests/StartTaskRequest.cs create mode 100644 PlexAPI/Models/Requests/StartTaskResponse.cs create mode 100644 PlexAPI/Models/Requests/StartTaskResponseBody.cs create mode 100644 PlexAPI/Models/Requests/StartUniversalTranscodeErrors.cs create mode 100644 PlexAPI/Models/Requests/StartUniversalTranscodeRequest.cs create mode 100644 PlexAPI/Models/Requests/StartUniversalTranscodeResponse.cs create mode 100644 PlexAPI/Models/Requests/StartUniversalTranscodeResponseBody.cs create mode 100644 PlexAPI/Models/Requests/State.cs create mode 100644 PlexAPI/Models/Requests/StopAllTasksErrors.cs create mode 100644 PlexAPI/Models/Requests/StopAllTasksResponse.cs create mode 100644 PlexAPI/Models/Requests/StopAllTasksResponseBody.cs create mode 100644 PlexAPI/Models/Requests/StopTaskErrors.cs create mode 100644 PlexAPI/Models/Requests/StopTaskRequest.cs create mode 100644 PlexAPI/Models/Requests/StopTaskResponse.cs create mode 100644 PlexAPI/Models/Requests/StopTaskResponseBody.cs create mode 100644 PlexAPI/Models/Requests/StopTranscodeSessionErrors.cs create mode 100644 PlexAPI/Models/Requests/StopTranscodeSessionRequest.cs create mode 100644 PlexAPI/Models/Requests/StopTranscodeSessionResponse.cs create mode 100644 PlexAPI/Models/Requests/StopTranscodeSessionResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Stream.cs create mode 100644 PlexAPI/Models/Requests/TaskName.cs create mode 100644 PlexAPI/Models/Requests/Tonight.cs create mode 100644 PlexAPI/Models/Requests/TranscodeSession.cs create mode 100644 PlexAPI/Models/Requests/Type.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlayProgressErrors.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlayProgressResponseBody.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlaylistErrors.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlaylistRequest.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlaylistResponse.cs create mode 100644 PlexAPI/Models/Requests/UpdatePlaylistResponseBody.cs create mode 100644 PlexAPI/Models/Requests/UploadPlaylistErrors.cs create mode 100644 PlexAPI/Models/Requests/UploadPlaylistRequest.cs create mode 100644 PlexAPI/Models/Requests/UploadPlaylistResponse.cs create mode 100644 PlexAPI/Models/Requests/UploadPlaylistResponseBody.cs create mode 100644 PlexAPI/Models/Requests/Upscale.cs create mode 100644 PlexAPI/Models/Requests/Writer.cs create mode 100644 PlexAPI/Playlists.cs create mode 100644 PlexAPI/PlexAPI.csproj create mode 100644 PlexAPI/PlexAPISDK.cs create mode 100644 PlexAPI/Search.cs create mode 100644 PlexAPI/Security.cs create mode 100644 PlexAPI/Server.cs create mode 100644 PlexAPI/Sessions.cs create mode 100644 PlexAPI/Updater.cs create mode 100644 PlexAPI/Utils/BigIntSerializer.cs create mode 100644 PlexAPI/Utils/DecimalSerializer.cs create mode 100644 PlexAPI/Utils/EnumSerializer.cs create mode 100644 PlexAPI/Utils/FlexibleObjectDeserializer.cs create mode 100644 PlexAPI/Utils/HeaderSerializer.cs create mode 100644 PlexAPI/Utils/IsoDateTimeSerializer.cs create mode 100644 PlexAPI/Utils/RequestBodySerializer.cs create mode 100644 PlexAPI/Utils/SecuritySerializer.cs create mode 100644 PlexAPI/Utils/SpeakeasyHttpClient.cs create mode 100644 PlexAPI/Utils/SpeakeasyMetadata.cs create mode 100644 PlexAPI/Utils/URLBuilder.cs create mode 100644 PlexAPI/Utils/Utilities.cs create mode 100644 PlexAPI/Video.cs create mode 100644 README.md create mode 100644 RELEASES.md create mode 100644 USAGE.md create mode 100644 docs/Models/Components/Security.md create mode 100644 docs/Models/Requests/Activity.md create mode 100644 docs/Models/Requests/AddPlaylistContentsErrors.md create mode 100644 docs/Models/Requests/AddPlaylistContentsRequest.md create mode 100644 docs/Models/Requests/AddPlaylistContentsResponse.md create mode 100644 docs/Models/Requests/AddPlaylistContentsResponseBody.md create mode 100644 docs/Models/Requests/ApplyUpdatesErrors.md create mode 100644 docs/Models/Requests/ApplyUpdatesRequest.md create mode 100644 docs/Models/Requests/ApplyUpdatesResponse.md create mode 100644 docs/Models/Requests/ApplyUpdatesResponseBody.md create mode 100644 docs/Models/Requests/ButlerTask.md create mode 100644 docs/Models/Requests/ButlerTasks.md create mode 100644 docs/Models/Requests/CancelServerActivitiesErrors.md create mode 100644 docs/Models/Requests/CancelServerActivitiesRequest.md create mode 100644 docs/Models/Requests/CancelServerActivitiesResponse.md create mode 100644 docs/Models/Requests/CancelServerActivitiesResponseBody.md create mode 100644 docs/Models/Requests/CheckForUpdatesErrors.md create mode 100644 docs/Models/Requests/CheckForUpdatesRequest.md create mode 100644 docs/Models/Requests/CheckForUpdatesResponse.md create mode 100644 docs/Models/Requests/CheckForUpdatesResponseBody.md create mode 100644 docs/Models/Requests/ClearPlaylistContentsErrors.md create mode 100644 docs/Models/Requests/ClearPlaylistContentsRequest.md create mode 100644 docs/Models/Requests/ClearPlaylistContentsResponse.md create mode 100644 docs/Models/Requests/ClearPlaylistContentsResponseBody.md create mode 100644 docs/Models/Requests/Context.md create mode 100644 docs/Models/Requests/Country.md create mode 100644 docs/Models/Requests/CreatePlaylistErrors.md create mode 100644 docs/Models/Requests/CreatePlaylistRequest.md create mode 100644 docs/Models/Requests/CreatePlaylistResponse.md create mode 100644 docs/Models/Requests/CreatePlaylistResponseBody.md create mode 100644 docs/Models/Requests/DeleteLibraryErrors.md create mode 100644 docs/Models/Requests/DeleteLibraryRequest.md create mode 100644 docs/Models/Requests/DeleteLibraryResponse.md create mode 100644 docs/Models/Requests/DeleteLibraryResponseBody.md create mode 100644 docs/Models/Requests/DeletePlaylistErrors.md create mode 100644 docs/Models/Requests/DeletePlaylistRequest.md create mode 100644 docs/Models/Requests/DeletePlaylistResponse.md create mode 100644 docs/Models/Requests/DeletePlaylistResponseBody.md create mode 100644 docs/Models/Requests/Device.md create mode 100644 docs/Models/Requests/Director.md create mode 100644 docs/Models/Requests/Directory.md create mode 100644 docs/Models/Requests/Download.md create mode 100644 docs/Models/Requests/EnablePaperTrailErrors.md create mode 100644 docs/Models/Requests/EnablePaperTrailResponse.md create mode 100644 docs/Models/Requests/EnablePaperTrailResponseBody.md create mode 100644 docs/Models/Requests/Errors.md create mode 100644 docs/Models/Requests/Force.md create mode 100644 docs/Models/Requests/Genre.md create mode 100644 docs/Models/Requests/GetAvailableClientsErrors.md create mode 100644 docs/Models/Requests/GetAvailableClientsMediaContainer.md create mode 100644 docs/Models/Requests/GetAvailableClientsResponse.md create mode 100644 docs/Models/Requests/GetAvailableClientsResponseBody.md create mode 100644 docs/Models/Requests/GetButlerTasksButlerResponseBody.md create mode 100644 docs/Models/Requests/GetButlerTasksErrors.md create mode 100644 docs/Models/Requests/GetButlerTasksResponse.md create mode 100644 docs/Models/Requests/GetButlerTasksResponseBody.md create mode 100644 docs/Models/Requests/GetCommonLibraryItemsErrors.md create mode 100644 docs/Models/Requests/GetCommonLibraryItemsRequest.md create mode 100644 docs/Models/Requests/GetCommonLibraryItemsResponse.md create mode 100644 docs/Models/Requests/GetCommonLibraryItemsResponseBody.md create mode 100644 docs/Models/Requests/GetDevicesErrors.md create mode 100644 docs/Models/Requests/GetDevicesMediaContainer.md create mode 100644 docs/Models/Requests/GetDevicesResponse.md create mode 100644 docs/Models/Requests/GetDevicesResponseBody.md create mode 100644 docs/Models/Requests/GetDevicesServerResponseBody.md create mode 100644 docs/Models/Requests/GetFileHashErrors.md create mode 100644 docs/Models/Requests/GetFileHashRequest.md create mode 100644 docs/Models/Requests/GetFileHashResponse.md create mode 100644 docs/Models/Requests/GetFileHashResponseBody.md create mode 100644 docs/Models/Requests/GetGlobalHubsErrors.md create mode 100644 docs/Models/Requests/GetGlobalHubsRequest.md create mode 100644 docs/Models/Requests/GetGlobalHubsResponse.md create mode 100644 docs/Models/Requests/GetGlobalHubsResponseBody.md create mode 100644 docs/Models/Requests/GetLatestLibraryItemsErrors.md create mode 100644 docs/Models/Requests/GetLatestLibraryItemsRequest.md create mode 100644 docs/Models/Requests/GetLatestLibraryItemsResponse.md create mode 100644 docs/Models/Requests/GetLatestLibraryItemsResponseBody.md create mode 100644 docs/Models/Requests/GetLibrariesErrors.md create mode 100644 docs/Models/Requests/GetLibrariesResponse.md create mode 100644 docs/Models/Requests/GetLibrariesResponseBody.md create mode 100644 docs/Models/Requests/GetLibraryErrors.md create mode 100644 docs/Models/Requests/GetLibraryHubsErrors.md create mode 100644 docs/Models/Requests/GetLibraryHubsRequest.md create mode 100644 docs/Models/Requests/GetLibraryHubsResponse.md create mode 100644 docs/Models/Requests/GetLibraryHubsResponseBody.md create mode 100644 docs/Models/Requests/GetLibraryItemsErrors.md create mode 100644 docs/Models/Requests/GetLibraryItemsRequest.md create mode 100644 docs/Models/Requests/GetLibraryItemsResponse.md create mode 100644 docs/Models/Requests/GetLibraryItemsResponseBody.md create mode 100644 docs/Models/Requests/GetLibraryRequest.md create mode 100644 docs/Models/Requests/GetLibraryResponse.md create mode 100644 docs/Models/Requests/GetLibraryResponseBody.md create mode 100644 docs/Models/Requests/GetMetadataChildrenErrors.md create mode 100644 docs/Models/Requests/GetMetadataChildrenRequest.md create mode 100644 docs/Models/Requests/GetMetadataChildrenResponse.md create mode 100644 docs/Models/Requests/GetMetadataChildrenResponseBody.md create mode 100644 docs/Models/Requests/GetMetadataErrors.md create mode 100644 docs/Models/Requests/GetMetadataRequest.md create mode 100644 docs/Models/Requests/GetMetadataResponse.md create mode 100644 docs/Models/Requests/GetMetadataResponseBody.md create mode 100644 docs/Models/Requests/GetMyPlexAccountErrors.md create mode 100644 docs/Models/Requests/GetMyPlexAccountResponse.md create mode 100644 docs/Models/Requests/GetMyPlexAccountResponseBody.md create mode 100644 docs/Models/Requests/GetMyPlexAccountServerResponseBody.md create mode 100644 docs/Models/Requests/GetOnDeckErrors.md create mode 100644 docs/Models/Requests/GetOnDeckLibraryResponseBody.md create mode 100644 docs/Models/Requests/GetOnDeckMedia.md create mode 100644 docs/Models/Requests/GetOnDeckMediaContainer.md create mode 100644 docs/Models/Requests/GetOnDeckMetadata.md create mode 100644 docs/Models/Requests/GetOnDeckPart.md create mode 100644 docs/Models/Requests/GetOnDeckResponse.md create mode 100644 docs/Models/Requests/GetOnDeckResponseBody.md create mode 100644 docs/Models/Requests/GetPlaylistContentsErrors.md create mode 100644 docs/Models/Requests/GetPlaylistContentsRequest.md create mode 100644 docs/Models/Requests/GetPlaylistContentsResponse.md create mode 100644 docs/Models/Requests/GetPlaylistContentsResponseBody.md create mode 100644 docs/Models/Requests/GetPlaylistErrors.md create mode 100644 docs/Models/Requests/GetPlaylistRequest.md create mode 100644 docs/Models/Requests/GetPlaylistResponse.md create mode 100644 docs/Models/Requests/GetPlaylistResponseBody.md create mode 100644 docs/Models/Requests/GetPlaylistsErrors.md create mode 100644 docs/Models/Requests/GetPlaylistsRequest.md create mode 100644 docs/Models/Requests/GetPlaylistsResponse.md create mode 100644 docs/Models/Requests/GetPlaylistsResponseBody.md create mode 100644 docs/Models/Requests/GetRecentlyAddedErrors.md create mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md create mode 100644 docs/Models/Requests/GetRecentlyAddedMediaContainer.md create mode 100644 docs/Models/Requests/GetRecentlyAddedResponse.md create mode 100644 docs/Models/Requests/GetRecentlyAddedResponseBody.md create mode 100644 docs/Models/Requests/GetResizedPhotoErrors.md create mode 100644 docs/Models/Requests/GetResizedPhotoRequest.md create mode 100644 docs/Models/Requests/GetResizedPhotoResponse.md create mode 100644 docs/Models/Requests/GetResizedPhotoResponseBody.md create mode 100644 docs/Models/Requests/GetSearchResultsCountry.md create mode 100644 docs/Models/Requests/GetSearchResultsDirector.md create mode 100644 docs/Models/Requests/GetSearchResultsErrors.md create mode 100644 docs/Models/Requests/GetSearchResultsGenre.md create mode 100644 docs/Models/Requests/GetSearchResultsMedia.md create mode 100644 docs/Models/Requests/GetSearchResultsMediaContainer.md create mode 100644 docs/Models/Requests/GetSearchResultsMetadata.md create mode 100644 docs/Models/Requests/GetSearchResultsPart.md create mode 100644 docs/Models/Requests/GetSearchResultsRequest.md create mode 100644 docs/Models/Requests/GetSearchResultsResponse.md create mode 100644 docs/Models/Requests/GetSearchResultsResponseBody.md create mode 100644 docs/Models/Requests/GetSearchResultsRole.md create mode 100644 docs/Models/Requests/GetSearchResultsSearchResponseBody.md create mode 100644 docs/Models/Requests/GetSearchResultsWriter.md create mode 100644 docs/Models/Requests/GetServerActivitiesActivitiesResponseBody.md create mode 100644 docs/Models/Requests/GetServerActivitiesErrors.md create mode 100644 docs/Models/Requests/GetServerActivitiesMediaContainer.md create mode 100644 docs/Models/Requests/GetServerActivitiesResponse.md create mode 100644 docs/Models/Requests/GetServerActivitiesResponseBody.md create mode 100644 docs/Models/Requests/GetServerCapabilitiesResponse.md create mode 100644 docs/Models/Requests/GetServerCapabilitiesResponseBody.md create mode 100644 docs/Models/Requests/GetServerCapabilitiesServerResponseBody.md create mode 100644 docs/Models/Requests/GetServerIdentityErrors.md create mode 100644 docs/Models/Requests/GetServerIdentityMediaContainer.md create mode 100644 docs/Models/Requests/GetServerIdentityResponse.md create mode 100644 docs/Models/Requests/GetServerIdentityResponseBody.md create mode 100644 docs/Models/Requests/GetServerIdentityServerResponseBody.md create mode 100644 docs/Models/Requests/GetServerListErrors.md create mode 100644 docs/Models/Requests/GetServerListMediaContainer.md create mode 100644 docs/Models/Requests/GetServerListResponse.md create mode 100644 docs/Models/Requests/GetServerListResponseBody.md create mode 100644 docs/Models/Requests/GetServerListServer.md create mode 100644 docs/Models/Requests/GetServerListServerResponseBody.md create mode 100644 docs/Models/Requests/GetServerPreferencesErrors.md create mode 100644 docs/Models/Requests/GetServerPreferencesResponse.md create mode 100644 docs/Models/Requests/GetServerPreferencesResponseBody.md create mode 100644 docs/Models/Requests/GetSessionHistoryErrors.md create mode 100644 docs/Models/Requests/GetSessionHistoryResponse.md create mode 100644 docs/Models/Requests/GetSessionHistoryResponseBody.md create mode 100644 docs/Models/Requests/GetSessionsErrors.md create mode 100644 docs/Models/Requests/GetSessionsResponse.md create mode 100644 docs/Models/Requests/GetSessionsResponseBody.md create mode 100644 docs/Models/Requests/GetSourceConnectionInformationErrors.md create mode 100644 docs/Models/Requests/GetSourceConnectionInformationRequest.md create mode 100644 docs/Models/Requests/GetSourceConnectionInformationResponse.md create mode 100644 docs/Models/Requests/GetSourceConnectionInformationResponseBody.md create mode 100644 docs/Models/Requests/GetTimelineErrors.md create mode 100644 docs/Models/Requests/GetTimelineRequest.md create mode 100644 docs/Models/Requests/GetTimelineResponse.md create mode 100644 docs/Models/Requests/GetTimelineResponseBody.md create mode 100644 docs/Models/Requests/GetTranscodeSessionsErrors.md create mode 100644 docs/Models/Requests/GetTranscodeSessionsMediaContainer.md create mode 100644 docs/Models/Requests/GetTranscodeSessionsResponse.md create mode 100644 docs/Models/Requests/GetTranscodeSessionsResponseBody.md create mode 100644 docs/Models/Requests/GetTranscodeSessionsSessionsResponseBody.md create mode 100644 docs/Models/Requests/GetTransientTokenErrors.md create mode 100644 docs/Models/Requests/GetTransientTokenRequest.md create mode 100644 docs/Models/Requests/GetTransientTokenResponse.md create mode 100644 docs/Models/Requests/GetTransientTokenResponseBody.md create mode 100644 docs/Models/Requests/GetUpdateStatusErrors.md create mode 100644 docs/Models/Requests/GetUpdateStatusResponse.md create mode 100644 docs/Models/Requests/GetUpdateStatusResponseBody.md create mode 100644 docs/Models/Requests/Guids.md create mode 100644 docs/Models/Requests/IncludeDetails.md create mode 100644 docs/Models/Requests/Level.md create mode 100644 docs/Models/Requests/LogLineErrors.md create mode 100644 docs/Models/Requests/LogLineRequest.md create mode 100644 docs/Models/Requests/LogLineResponse.md create mode 100644 docs/Models/Requests/LogLineResponseBody.md create mode 100644 docs/Models/Requests/LogMultiLineErrors.md create mode 100644 docs/Models/Requests/LogMultiLineResponse.md create mode 100644 docs/Models/Requests/LogMultiLineResponseBody.md create mode 100644 docs/Models/Requests/MarkPlayedErrors.md create mode 100644 docs/Models/Requests/MarkPlayedRequest.md create mode 100644 docs/Models/Requests/MarkPlayedResponse.md create mode 100644 docs/Models/Requests/MarkPlayedResponseBody.md create mode 100644 docs/Models/Requests/MarkUnplayedErrors.md create mode 100644 docs/Models/Requests/MarkUnplayedRequest.md create mode 100644 docs/Models/Requests/MarkUnplayedResponse.md create mode 100644 docs/Models/Requests/MarkUnplayedResponseBody.md create mode 100644 docs/Models/Requests/Media.md create mode 100644 docs/Models/Requests/MediaContainer.md create mode 100644 docs/Models/Requests/Metadata.md create mode 100644 docs/Models/Requests/MinSize.md create mode 100644 docs/Models/Requests/MyPlex.md create mode 100644 docs/Models/Requests/OnlyTransient.md create mode 100644 docs/Models/Requests/Part.md create mode 100644 docs/Models/Requests/PathParamTaskName.md create mode 100644 docs/Models/Requests/PerformSearchErrors.md create mode 100644 docs/Models/Requests/PerformSearchRequest.md create mode 100644 docs/Models/Requests/PerformSearchResponse.md create mode 100644 docs/Models/Requests/PerformSearchResponseBody.md create mode 100644 docs/Models/Requests/PerformVoiceSearchErrors.md create mode 100644 docs/Models/Requests/PerformVoiceSearchRequest.md create mode 100644 docs/Models/Requests/PerformVoiceSearchResponse.md create mode 100644 docs/Models/Requests/PerformVoiceSearchResponseBody.md create mode 100644 docs/Models/Requests/PlaylistType.md create mode 100644 docs/Models/Requests/Provider.md create mode 100644 docs/Models/Requests/QueryParamOnlyTransient.md create mode 100644 docs/Models/Requests/QueryParamSmart.md create mode 100644 docs/Models/Requests/QueryParamType.md create mode 100644 docs/Models/Requests/RefreshLibraryErrors.md create mode 100644 docs/Models/Requests/RefreshLibraryRequest.md create mode 100644 docs/Models/Requests/RefreshLibraryResponse.md create mode 100644 docs/Models/Requests/RefreshLibraryResponseBody.md create mode 100644 docs/Models/Requests/ResponseBody.md create mode 100644 docs/Models/Requests/Role.md create mode 100644 docs/Models/Requests/Scope.md create mode 100644 docs/Models/Requests/Server.md create mode 100644 docs/Models/Requests/Skip.md create mode 100644 docs/Models/Requests/Smart.md create mode 100644 docs/Models/Requests/StartAllTasksErrors.md create mode 100644 docs/Models/Requests/StartAllTasksResponse.md create mode 100644 docs/Models/Requests/StartAllTasksResponseBody.md create mode 100644 docs/Models/Requests/StartTaskErrors.md create mode 100644 docs/Models/Requests/StartTaskRequest.md create mode 100644 docs/Models/Requests/StartTaskResponse.md create mode 100644 docs/Models/Requests/StartTaskResponseBody.md create mode 100644 docs/Models/Requests/StartUniversalTranscodeErrors.md create mode 100644 docs/Models/Requests/StartUniversalTranscodeRequest.md create mode 100644 docs/Models/Requests/StartUniversalTranscodeResponse.md create mode 100644 docs/Models/Requests/StartUniversalTranscodeResponseBody.md create mode 100644 docs/Models/Requests/State.md create mode 100644 docs/Models/Requests/StopAllTasksErrors.md create mode 100644 docs/Models/Requests/StopAllTasksResponse.md create mode 100644 docs/Models/Requests/StopAllTasksResponseBody.md create mode 100644 docs/Models/Requests/StopTaskErrors.md create mode 100644 docs/Models/Requests/StopTaskRequest.md create mode 100644 docs/Models/Requests/StopTaskResponse.md create mode 100644 docs/Models/Requests/StopTaskResponseBody.md create mode 100644 docs/Models/Requests/StopTranscodeSessionErrors.md create mode 100644 docs/Models/Requests/StopTranscodeSessionRequest.md create mode 100644 docs/Models/Requests/StopTranscodeSessionResponse.md create mode 100644 docs/Models/Requests/StopTranscodeSessionResponseBody.md create mode 100644 docs/Models/Requests/Stream.md create mode 100644 docs/Models/Requests/TaskName.md create mode 100644 docs/Models/Requests/Tonight.md create mode 100644 docs/Models/Requests/TranscodeSession.md create mode 100644 docs/Models/Requests/Type.md create mode 100644 docs/Models/Requests/UpdatePlayProgressErrors.md create mode 100644 docs/Models/Requests/UpdatePlayProgressRequest.md create mode 100644 docs/Models/Requests/UpdatePlayProgressResponse.md create mode 100644 docs/Models/Requests/UpdatePlayProgressResponseBody.md create mode 100644 docs/Models/Requests/UpdatePlaylistErrors.md create mode 100644 docs/Models/Requests/UpdatePlaylistRequest.md create mode 100644 docs/Models/Requests/UpdatePlaylistResponse.md create mode 100644 docs/Models/Requests/UpdatePlaylistResponseBody.md create mode 100644 docs/Models/Requests/UploadPlaylistErrors.md create mode 100644 docs/Models/Requests/UploadPlaylistRequest.md create mode 100644 docs/Models/Requests/UploadPlaylistResponse.md create mode 100644 docs/Models/Requests/UploadPlaylistResponseBody.md create mode 100644 docs/Models/Requests/Upscale.md create mode 100644 docs/Models/Requests/Writer.md create mode 100644 docs/sdks/activities/README.md create mode 100644 docs/sdks/butler/README.md create mode 100644 docs/sdks/hubs/README.md create mode 100644 docs/sdks/library/README.md create mode 100644 docs/sdks/log/README.md create mode 100644 docs/sdks/media/README.md create mode 100644 docs/sdks/playlists/README.md create mode 100644 docs/sdks/plexapi/README.md create mode 100644 docs/sdks/search/README.md create mode 100644 docs/sdks/security/README.md create mode 100644 docs/sdks/server/README.md create mode 100644 docs/sdks/sessions/README.md create mode 100644 docs/sdks/updater/README.md create mode 100644 docs/sdks/video/README.md create mode 100644 files.gen diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c094dba --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# This allows generated code to be indexed correctly +*.cs linguist-generated=false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b004ece --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +obj/ +bin/ +debug/ diff --git a/PlexAPI.sln b/PlexAPI.sln new file mode 100644 index 0000000..750fccf --- /dev/null +++ b/PlexAPI.sln @@ -0,0 +1,17 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlexAPI", "PlexAPI\PlexAPI.csproj", "{F0CE92B5-F3CC-45A2-AA83-118C38724EB1}" +EndProject + +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F0CE92B5-F3CC-45A2-AA83-118C38724EB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0CE92B5-F3CC-45A2-AA83-118C38724EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0CE92B5-F3CC-45A2-AA83-118C38724EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0CE92B5-F3CC-45A2-AA83-118C38724EB1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal \ No newline at end of file diff --git a/PlexAPI/Activities.cs b/PlexAPI/Activities.cs new file mode 100644 index 0000000..0949239 --- /dev/null +++ b/PlexAPI/Activities.cs @@ -0,0 +1,183 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
+ /// + /// + /// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
+ /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
+ /// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
+ /// - They must contain an `type` which is used by clients to distinguish the specific activity.
+ /// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
+ /// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
+ /// + ///
+ ///
+ public interface IActivities + { + + /// + /// Get Server Activities + /// + /// + /// Get Server Activities + /// + /// + Task GetServerActivitiesAsync(); + + /// + /// Cancel Server Activities + /// + /// + /// Cancel Server Activities + /// + /// + Task CancelServerActivitiesAsync(string activityUUID); + } + + /// + /// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
+ /// + /// + /// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
+ /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
+ /// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
+ /// - They must contain an `type` which is used by clients to distinguish the specific activity.
+ /// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
+ /// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
+ /// + ///
+ ///
+ public class Activities: IActivities + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Activities(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetServerActivitiesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/activities"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetServerActivitiesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task CancelServerActivitiesAsync(string activityUUID) + { + var request = new CancelServerActivitiesRequest() + { + ActivityUUID = activityUUID, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/activities/{activityUUID}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new CancelServerActivitiesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Butler.cs b/PlexAPI/Butler.cs new file mode 100644 index 0000000..ae181c9 --- /dev/null +++ b/PlexAPI/Butler.cs @@ -0,0 +1,334 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// Butler is the task manager of the Plex Media Server Ecosystem.
+ /// + /// + /// + /// + ///
+ public interface IButler + { + + /// + /// Get Butler tasks + /// + /// + /// Returns a list of butler tasks + /// + /// + Task GetButlerTasksAsync(); + + /// + /// Start all Butler tasks + /// + /// + /// This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
+ /// 1. Any tasks not scheduled to run on the current day will be skipped.
+ /// 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
+ /// 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
+ /// 4. If we are outside the configured window, the task will start immediately.
+ /// + ///
+ ///
+ Task StartAllTasksAsync(); + + /// + /// Stop all Butler tasks + /// + /// + /// This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue.
+ /// + ///
+ ///
+ Task StopAllTasksAsync(); + + /// + /// Start a single Butler task + /// + /// + /// This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
+ /// 1. Any tasks not scheduled to run on the current day will be skipped.
+ /// 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
+ /// 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
+ /// 4. If we are outside the configured window, the task will start immediately.
+ /// + ///
+ ///
+ Task StartTaskAsync(TaskName taskName); + + /// + /// Stop a single Butler task + /// + /// + /// This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint.
+ /// + ///
+ ///
+ Task StopTaskAsync(PathParamTaskName taskName); + } + + /// + /// Butler is the task manager of the Plex Media Server Ecosystem.
+ /// + /// + /// + /// + ///
+ public class Butler: IButler + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Butler(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetButlerTasksAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/butler"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetButlerTasksResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task StartAllTasksAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/butler"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new StartAllTasksResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task StopAllTasksAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/butler"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new StopAllTasksResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task StartTaskAsync(TaskName taskName) + { + var request = new StartTaskRequest() + { + TaskName = taskName, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/butler/{taskName}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new StartTaskResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 202) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task StopTaskAsync(PathParamTaskName taskName) + { + var request = new StopTaskRequest() + { + TaskName = taskName, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/butler/{taskName}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new StopTaskResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400) || (response.StatusCode == 404)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Hubs.cs b/PlexAPI/Hubs.cs new file mode 100644 index 0000000..3077aed --- /dev/null +++ b/PlexAPI/Hubs.cs @@ -0,0 +1,170 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
+ /// + /// + /// + /// + ///
+ public interface IHubs + { + + /// + /// Get Global Hubs + /// + /// + /// Get Global Hubs filtered by the parameters provided. + /// + /// + Task GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null); + + /// + /// Get library specific hubs + /// + /// + /// This endpoint will return a list of library specific hubs
+ /// + ///
+ ///
+ Task GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null); + } + + /// + /// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
+ /// + /// + /// + /// + ///
+ public class Hubs: IHubs + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Hubs(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null) + { + var request = new GetGlobalHubsRequest() + { + Count = count, + OnlyTransient = onlyTransient, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/hubs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetGlobalHubsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null) + { + var request = new GetLibraryHubsRequest() + { + SectionId = sectionId, + Count = count, + OnlyTransient = onlyTransient, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetLibraryHubsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Library.cs b/PlexAPI/Library.cs new file mode 100644 index 0000000..81d82ff --- /dev/null +++ b/PlexAPI/Library.cs @@ -0,0 +1,743 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// API Calls interacting with Plex Media Server Libraries
+ /// + /// + /// + /// + ///
+ public interface ILibrary + { + + /// + /// Get Hash Value + /// + /// + /// This resource returns hash values for local files + /// + /// + Task GetFileHashAsync(string url, double? type = null); + + /// + /// Get Recently Added + /// + /// + /// This endpoint will return the recently added content.
+ /// + ///
+ ///
+ Task GetRecentlyAddedAsync(); + + /// + /// Get All Libraries + /// + /// + /// A library section (commonly referred to as just a library) is a collection of media.
+ /// Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media.
+ /// For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat.
+ ///
+ /// Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts.
+ /// This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year).
+ /// + ///
+ ///
+ Task GetLibrariesAsync(); + + /// + /// Get Library Details + /// + /// + /// Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. These details are:
+ ///
+ /// - A list of `Directory` objects: These used to be used by clients to build a menuing system. There are four flavors of directory found here:
+ /// - Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
+ /// - Secondary: These are marked with `secondary="1"` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
+ /// - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `search="1"` which used to be used to allow clients to build search dialogs on the fly.
+ /// - A list of `Type` objects: These represent the types of things found in this library, and for each one, a list of `Filter` and `Sort` objects. These can be used to build rich controls around a grid of media to allow filtering and organizing. Note that these filters and sorts are optional, and without them, the client won't render any filtering controls. The `Type` object contains:
+ /// - `key`: This provides the root endpoint returning the actual media list for the type.
+ /// - `type`: This is the metadata type for the type (if a standard Plex type).
+ /// - `title`: The title for for the content of this type (e.g. "Movies").
+ /// - Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an inportant subset useful for top-level API.
+ /// - `filter`: This represents the filter name used for the filter, which can be used to construct complex media queries with.
+ /// - `filterType`: This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter.
+ /// - `key`: This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element.
+ /// - `title`: The title for the filter.
+ /// - Each `Sort` object contains a description of the sort field.
+ /// - `defaultDirection`: Can be either `asc` or `desc`, and specifies the default direction for the sort field (e.g. titles default to alphabetically ascending).
+ /// - `descKey` and `key`: Contains the parameters passed to the `sort=...` media query for each direction of the sort.
+ /// - `title`: The title of the field.
+ /// + ///
+ ///
+ Task GetLibraryAsync(double sectionId, IncludeDetails? includeDetails = null); + + /// + /// Delete Library Section + /// + /// + /// Delate a library using a specific section + /// + /// + Task DeleteLibraryAsync(double sectionId); + + /// + /// Get Library Items + /// + /// + /// This endpoint will return a list of library items filtered by the filter and type provided
+ /// + ///
+ ///
+ Task GetLibraryItemsAsync(double sectionId, double? type = null, string? filter = null); + + /// + /// Refresh Library + /// + /// + /// This endpoint Refreshes the library.
+ /// + ///
+ ///
+ Task RefreshLibraryAsync(double sectionId); + + /// + /// Get Latest Library Items + /// + /// + /// This endpoint will return a list of the latest library items filtered by the filter and type provided
+ /// + ///
+ ///
+ Task GetLatestLibraryItemsAsync(double sectionId, double type, string? filter = null); + + /// + /// Get Common Library Items + /// + /// + /// Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter
+ /// + ///
+ ///
+ Task GetCommonLibraryItemsAsync(double sectionId, double type, string? filter = null); + + /// + /// Get Items Metadata + /// + /// + /// This endpoint will return the metadata of a library item specified with the ratingKey.
+ /// + ///
+ ///
+ Task GetMetadataAsync(double ratingKey); + + /// + /// Get Items Children + /// + /// + /// This endpoint will return the children of of a library item specified with the ratingKey.
+ /// + ///
+ ///
+ Task GetMetadataChildrenAsync(double ratingKey); + + /// + /// Get On Deck + /// + /// + /// This endpoint will return the on deck content.
+ /// + ///
+ ///
+ Task GetOnDeckAsync(); + } + + /// + /// API Calls interacting with Plex Media Server Libraries
+ /// + /// + /// + /// + ///
+ public class Library: ILibrary + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Library(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetFileHashAsync(string url, double? type = null) + { + var request = new GetFileHashRequest() + { + Url = url, + Type = type, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/hashes", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetFileHashResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetRecentlyAddedAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/library/recentlyAdded"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetRecentlyAddedResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetLibrariesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/library/sections"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetLibrariesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetLibraryAsync(double sectionId, IncludeDetails? includeDetails = null) + { + var request = new GetLibraryRequest() + { + SectionId = sectionId, + IncludeDetails = includeDetails, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetLibraryResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task DeleteLibraryAsync(double sectionId) + { + var request = new DeleteLibraryRequest() + { + SectionId = sectionId, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new DeleteLibraryResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetLibraryItemsAsync(double sectionId, double? type = null, string? filter = null) + { + var request = new GetLibraryItemsRequest() + { + SectionId = sectionId, + Type = type, + Filter = filter, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetLibraryItemsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task RefreshLibraryAsync(double sectionId) + { + var request = new RefreshLibraryRequest() + { + SectionId = sectionId, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new RefreshLibraryResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetLatestLibraryItemsAsync(double sectionId, double type, string? filter = null) + { + var request = new GetLatestLibraryItemsRequest() + { + SectionId = sectionId, + Type = type, + Filter = filter, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/latest", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetLatestLibraryItemsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetCommonLibraryItemsAsync(double sectionId, double type, string? filter = null) + { + var request = new GetCommonLibraryItemsRequest() + { + SectionId = sectionId, + Type = type, + Filter = filter, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/common", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetCommonLibraryItemsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400) || (response.StatusCode == 404)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetMetadataAsync(double ratingKey) + { + var request = new GetMetadataRequest() + { + RatingKey = ratingKey, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetMetadataResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetMetadataChildrenAsync(double ratingKey) + { + var request = new GetMetadataChildrenRequest() + { + RatingKey = ratingKey, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/children", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetMetadataChildrenResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetOnDeckAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/library/onDeck"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetOnDeckResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Log.cs b/PlexAPI/Log.cs new file mode 100644 index 0000000..cfc67ad --- /dev/null +++ b/PlexAPI/Log.cs @@ -0,0 +1,216 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// Submit logs to the Log Handler for Plex Media Server
+ /// + /// + /// + /// + ///
+ public interface ILog + { + + /// + /// Logging a single line message. + /// + /// + /// This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log.
+ /// + ///
+ ///
+ Task LogLineAsync(Level level, string message, string source); + + /// + /// Logging a multi-line message + /// + /// + /// This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above GET endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above.
+ /// + ///
+ ///
+ Task LogMultiLineAsync(); + + /// + /// Enabling Papertrail + /// + /// + /// This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time.
+ /// + ///
+ ///
+ Task EnablePaperTrailAsync(); + } + + /// + /// Submit logs to the Log Handler for Plex Media Server
+ /// + /// + /// + /// + ///
+ public class Log: ILog + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Log(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task LogLineAsync(Level level, string message, string source) + { + var request = new LogLineRequest() + { + Level = level, + Message = message, + Source = source, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/log", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new LogLineResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task LogMultiLineAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/log"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new LogMultiLineResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task EnablePaperTrailAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/log/networked"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new EnablePaperTrailResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400) || (response.StatusCode == 403)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Media.cs b/PlexAPI/Media.cs new file mode 100644 index 0000000..c349a37 --- /dev/null +++ b/PlexAPI/Media.cs @@ -0,0 +1,222 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// API Calls interacting with Plex Media Server Media
+ /// + /// + /// + /// + ///
+ public interface IMedia + { + + /// + /// Mark Media Played + /// + /// + /// This will mark the provided media key as Played. + /// + /// + Task MarkPlayedAsync(double key); + + /// + /// Mark Media Unplayed + /// + /// + /// This will mark the provided media key as Unplayed. + /// + /// + Task MarkUnplayedAsync(double key); + + /// + /// Update Media Play Progress + /// + /// + /// This API command can be used to update the play progress of a media item.
+ /// + ///
+ ///
+ Task UpdatePlayProgressAsync(string key, double time, string state); + } + + /// + /// API Calls interacting with Plex Media Server Media
+ /// + /// + /// + /// + ///
+ public class Media: IMedia + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Media(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task MarkPlayedAsync(double key) + { + var request = new MarkPlayedRequest() + { + Key = key, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/:/scrobble", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new MarkPlayedResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task MarkUnplayedAsync(double key) + { + var request = new MarkUnplayedRequest() + { + Key = key, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/:/unscrobble", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new MarkUnplayedResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task UpdatePlayProgressAsync(string key, double time, string state) + { + var request = new UpdatePlayProgressRequest() + { + Key = key, + Time = time, + State = state, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/:/progress", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new UpdatePlayProgressResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Components/Security.cs b/PlexAPI/Models/Components/Security.cs new file mode 100644 index 0000000..6394d7d --- /dev/null +++ b/PlexAPI/Models/Components/Security.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Components +{ + using PlexAPI.Utils; + + public class Security + { + + [SpeakeasyMetadata("security:scheme=true,type=apiKey,subType=header,name=X-Plex-Token")] + public string AccessToken { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Activity.cs b/PlexAPI/Models/Requests/Activity.cs new file mode 100644 index 0000000..edd6bc0 --- /dev/null +++ b/PlexAPI/Models/Requests/Activity.cs @@ -0,0 +1,42 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Activity + { + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("cancellable")] + public bool? Cancellable { get; set; } + + [JsonProperty("userID")] + public double? UserID { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("subtitle")] + public string? Subtitle { get; set; } + + [JsonProperty("progress")] + public double? Progress { get; set; } + + [JsonProperty("Context")] + public Context? Context { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/AddPlaylistContentsErrors.cs b/PlexAPI/Models/Requests/AddPlaylistContentsErrors.cs new file mode 100644 index 0000000..b764156 --- /dev/null +++ b/PlexAPI/Models/Requests/AddPlaylistContentsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class AddPlaylistContentsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/AddPlaylistContentsRequest.cs b/PlexAPI/Models/Requests/AddPlaylistContentsRequest.cs new file mode 100644 index 0000000..503e821 --- /dev/null +++ b/PlexAPI/Models/Requests/AddPlaylistContentsRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class AddPlaylistContentsRequest + { + + /// + /// the ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] + public double PlaylistID { get; set; } = default!; + + /// + /// the content URI for the playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string Uri { get; set; } = default!; + + /// + /// the play queue to add to a playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playQueueID")] + public double PlayQueueID { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/AddPlaylistContentsResponse.cs b/PlexAPI/Models/Requests/AddPlaylistContentsResponse.cs new file mode 100644 index 0000000..43efc9f --- /dev/null +++ b/PlexAPI/Models/Requests/AddPlaylistContentsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class AddPlaylistContentsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public AddPlaylistContentsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/AddPlaylistContentsResponseBody.cs b/PlexAPI/Models/Requests/AddPlaylistContentsResponseBody.cs new file mode 100644 index 0000000..721d328 --- /dev/null +++ b/PlexAPI/Models/Requests/AddPlaylistContentsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class AddPlaylistContentsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ApplyUpdatesErrors.cs b/PlexAPI/Models/Requests/ApplyUpdatesErrors.cs new file mode 100644 index 0000000..3ede6e4 --- /dev/null +++ b/PlexAPI/Models/Requests/ApplyUpdatesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class ApplyUpdatesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ApplyUpdatesRequest.cs b/PlexAPI/Models/Requests/ApplyUpdatesRequest.cs new file mode 100644 index 0000000..8c6925c --- /dev/null +++ b/PlexAPI/Models/Requests/ApplyUpdatesRequest.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class ApplyUpdatesRequest + { + + /// + /// Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tonight")] + public Tonight? Tonight { get; set; } + + /// + /// Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=skip")] + public Skip? Skip { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ApplyUpdatesResponse.cs b/PlexAPI/Models/Requests/ApplyUpdatesResponse.cs new file mode 100644 index 0000000..32e389d --- /dev/null +++ b/PlexAPI/Models/Requests/ApplyUpdatesResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class ApplyUpdatesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public ApplyUpdatesResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ApplyUpdatesResponseBody.cs b/PlexAPI/Models/Requests/ApplyUpdatesResponseBody.cs new file mode 100644 index 0000000..c41e07b --- /dev/null +++ b/PlexAPI/Models/Requests/ApplyUpdatesResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class ApplyUpdatesResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ButlerTask.cs b/PlexAPI/Models/Requests/ButlerTask.cs new file mode 100644 index 0000000..13cbe7c --- /dev/null +++ b/PlexAPI/Models/Requests/ButlerTask.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class ButlerTask + { + + [JsonProperty("name")] + public string? Name { get; set; } + + [JsonProperty("interval")] + public double? Interval { get; set; } + + [JsonProperty("scheduleRandomized")] + public bool? ScheduleRandomized { get; set; } + + [JsonProperty("enabled")] + public bool? Enabled { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("description")] + public string? Description { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ButlerTasks.cs b/PlexAPI/Models/Requests/ButlerTasks.cs new file mode 100644 index 0000000..11bcaf9 --- /dev/null +++ b/PlexAPI/Models/Requests/ButlerTasks.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class ButlerTasks + { + + [JsonProperty("ButlerTask")] + public List? ButlerTask { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CancelServerActivitiesErrors.cs b/PlexAPI/Models/Requests/CancelServerActivitiesErrors.cs new file mode 100644 index 0000000..148bd93 --- /dev/null +++ b/PlexAPI/Models/Requests/CancelServerActivitiesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class CancelServerActivitiesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CancelServerActivitiesRequest.cs b/PlexAPI/Models/Requests/CancelServerActivitiesRequest.cs new file mode 100644 index 0000000..2e4977c --- /dev/null +++ b/PlexAPI/Models/Requests/CancelServerActivitiesRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class CancelServerActivitiesRequest + { + + /// + /// The UUID of the activity to cancel. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=activityUUID")] + public string ActivityUUID { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CancelServerActivitiesResponse.cs b/PlexAPI/Models/Requests/CancelServerActivitiesResponse.cs new file mode 100644 index 0000000..f27231f --- /dev/null +++ b/PlexAPI/Models/Requests/CancelServerActivitiesResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class CancelServerActivitiesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public CancelServerActivitiesResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CancelServerActivitiesResponseBody.cs b/PlexAPI/Models/Requests/CancelServerActivitiesResponseBody.cs new file mode 100644 index 0000000..08d0840 --- /dev/null +++ b/PlexAPI/Models/Requests/CancelServerActivitiesResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class CancelServerActivitiesResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CheckForUpdatesErrors.cs b/PlexAPI/Models/Requests/CheckForUpdatesErrors.cs new file mode 100644 index 0000000..acc08dd --- /dev/null +++ b/PlexAPI/Models/Requests/CheckForUpdatesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class CheckForUpdatesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CheckForUpdatesRequest.cs b/PlexAPI/Models/Requests/CheckForUpdatesRequest.cs new file mode 100644 index 0000000..ed08356 --- /dev/null +++ b/PlexAPI/Models/Requests/CheckForUpdatesRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class CheckForUpdatesRequest + { + + /// + /// Indicate that you want to start download any updates found. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=download")] + public Download? Download { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CheckForUpdatesResponse.cs b/PlexAPI/Models/Requests/CheckForUpdatesResponse.cs new file mode 100644 index 0000000..ca2bc9f --- /dev/null +++ b/PlexAPI/Models/Requests/CheckForUpdatesResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class CheckForUpdatesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public CheckForUpdatesResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CheckForUpdatesResponseBody.cs b/PlexAPI/Models/Requests/CheckForUpdatesResponseBody.cs new file mode 100644 index 0000000..de75d59 --- /dev/null +++ b/PlexAPI/Models/Requests/CheckForUpdatesResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class CheckForUpdatesResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ClearPlaylistContentsErrors.cs b/PlexAPI/Models/Requests/ClearPlaylistContentsErrors.cs new file mode 100644 index 0000000..c085578 --- /dev/null +++ b/PlexAPI/Models/Requests/ClearPlaylistContentsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class ClearPlaylistContentsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ClearPlaylistContentsRequest.cs b/PlexAPI/Models/Requests/ClearPlaylistContentsRequest.cs new file mode 100644 index 0000000..a9906de --- /dev/null +++ b/PlexAPI/Models/Requests/ClearPlaylistContentsRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class ClearPlaylistContentsRequest + { + + /// + /// the ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] + public double PlaylistID { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ClearPlaylistContentsResponse.cs b/PlexAPI/Models/Requests/ClearPlaylistContentsResponse.cs new file mode 100644 index 0000000..ae0cedd --- /dev/null +++ b/PlexAPI/Models/Requests/ClearPlaylistContentsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class ClearPlaylistContentsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public ClearPlaylistContentsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ClearPlaylistContentsResponseBody.cs b/PlexAPI/Models/Requests/ClearPlaylistContentsResponseBody.cs new file mode 100644 index 0000000..ddd16f3 --- /dev/null +++ b/PlexAPI/Models/Requests/ClearPlaylistContentsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class ClearPlaylistContentsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Context.cs b/PlexAPI/Models/Requests/Context.cs new file mode 100644 index 0000000..34f91d1 --- /dev/null +++ b/PlexAPI/Models/Requests/Context.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Context + { + + [JsonProperty("librarySectionID")] + public string? LibrarySectionID { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Country.cs b/PlexAPI/Models/Requests/Country.cs new file mode 100644 index 0000000..0d17729 --- /dev/null +++ b/PlexAPI/Models/Requests/Country.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Country + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CreatePlaylistErrors.cs b/PlexAPI/Models/Requests/CreatePlaylistErrors.cs new file mode 100644 index 0000000..5e59659 --- /dev/null +++ b/PlexAPI/Models/Requests/CreatePlaylistErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class CreatePlaylistErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CreatePlaylistRequest.cs b/PlexAPI/Models/Requests/CreatePlaylistRequest.cs new file mode 100644 index 0000000..1322724 --- /dev/null +++ b/PlexAPI/Models/Requests/CreatePlaylistRequest.cs @@ -0,0 +1,48 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class CreatePlaylistRequest + { + + /// + /// name of the playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] + public string Title { get; set; } = default!; + + /// + /// type of playlist to create + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public Type Type { get; set; } = default!; + + /// + /// whether the playlist is smart or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=smart")] + public Smart Smart { get; set; } = default!; + + /// + /// the content URI for the playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } + + /// + /// the play queue to copy to a playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playQueueID")] + public double? PlayQueueID { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CreatePlaylistResponse.cs b/PlexAPI/Models/Requests/CreatePlaylistResponse.cs new file mode 100644 index 0000000..16bfa70 --- /dev/null +++ b/PlexAPI/Models/Requests/CreatePlaylistResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class CreatePlaylistResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public CreatePlaylistResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/CreatePlaylistResponseBody.cs b/PlexAPI/Models/Requests/CreatePlaylistResponseBody.cs new file mode 100644 index 0000000..d9c5415 --- /dev/null +++ b/PlexAPI/Models/Requests/CreatePlaylistResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class CreatePlaylistResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeleteLibraryErrors.cs b/PlexAPI/Models/Requests/DeleteLibraryErrors.cs new file mode 100644 index 0000000..ee72fe3 --- /dev/null +++ b/PlexAPI/Models/Requests/DeleteLibraryErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class DeleteLibraryErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeleteLibraryRequest.cs b/PlexAPI/Models/Requests/DeleteLibraryRequest.cs new file mode 100644 index 0000000..aaa25a5 --- /dev/null +++ b/PlexAPI/Models/Requests/DeleteLibraryRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class DeleteLibraryRequest + { + + /// + /// the Id of the library to query + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeleteLibraryResponse.cs b/PlexAPI/Models/Requests/DeleteLibraryResponse.cs new file mode 100644 index 0000000..801ce72 --- /dev/null +++ b/PlexAPI/Models/Requests/DeleteLibraryResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class DeleteLibraryResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public DeleteLibraryResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeleteLibraryResponseBody.cs b/PlexAPI/Models/Requests/DeleteLibraryResponseBody.cs new file mode 100644 index 0000000..1912513 --- /dev/null +++ b/PlexAPI/Models/Requests/DeleteLibraryResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class DeleteLibraryResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeletePlaylistErrors.cs b/PlexAPI/Models/Requests/DeletePlaylistErrors.cs new file mode 100644 index 0000000..b316765 --- /dev/null +++ b/PlexAPI/Models/Requests/DeletePlaylistErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class DeletePlaylistErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeletePlaylistRequest.cs b/PlexAPI/Models/Requests/DeletePlaylistRequest.cs new file mode 100644 index 0000000..90ec8dc --- /dev/null +++ b/PlexAPI/Models/Requests/DeletePlaylistRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class DeletePlaylistRequest + { + + /// + /// the ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] + public double PlaylistID { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeletePlaylistResponse.cs b/PlexAPI/Models/Requests/DeletePlaylistResponse.cs new file mode 100644 index 0000000..f21123e --- /dev/null +++ b/PlexAPI/Models/Requests/DeletePlaylistResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class DeletePlaylistResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public DeletePlaylistResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/DeletePlaylistResponseBody.cs b/PlexAPI/Models/Requests/DeletePlaylistResponseBody.cs new file mode 100644 index 0000000..2540e1f --- /dev/null +++ b/PlexAPI/Models/Requests/DeletePlaylistResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class DeletePlaylistResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Device.cs b/PlexAPI/Models/Requests/Device.cs new file mode 100644 index 0000000..3783b5c --- /dev/null +++ b/PlexAPI/Models/Requests/Device.cs @@ -0,0 +1,33 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Device + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("name")] + public string? Name { get; set; } + + [JsonProperty("platform")] + public string? Platform { get; set; } + + [JsonProperty("clientIdentifier")] + public string? ClientIdentifier { get; set; } + + [JsonProperty("createdAt")] + public double? CreatedAt { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Director.cs b/PlexAPI/Models/Requests/Director.cs new file mode 100644 index 0000000..17efc65 --- /dev/null +++ b/PlexAPI/Models/Requests/Director.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Director + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Directory.cs b/PlexAPI/Models/Requests/Directory.cs new file mode 100644 index 0000000..585b05c --- /dev/null +++ b/PlexAPI/Models/Requests/Directory.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Directory + { + + [JsonProperty("count")] + public double? Count { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Download.cs b/PlexAPI/Models/Requests/Download.cs new file mode 100644 index 0000000..e82c7c4 --- /dev/null +++ b/PlexAPI/Models/Requests/Download.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// Indicate that you want to start download any updates found. + /// + public enum Download + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/EnablePaperTrailErrors.cs b/PlexAPI/Models/Requests/EnablePaperTrailErrors.cs new file mode 100644 index 0000000..5231a2c --- /dev/null +++ b/PlexAPI/Models/Requests/EnablePaperTrailErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class EnablePaperTrailErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/EnablePaperTrailResponse.cs b/PlexAPI/Models/Requests/EnablePaperTrailResponse.cs new file mode 100644 index 0000000..c0d1be8 --- /dev/null +++ b/PlexAPI/Models/Requests/EnablePaperTrailResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class EnablePaperTrailResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public EnablePaperTrailResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/EnablePaperTrailResponseBody.cs b/PlexAPI/Models/Requests/EnablePaperTrailResponseBody.cs new file mode 100644 index 0000000..9c6882d --- /dev/null +++ b/PlexAPI/Models/Requests/EnablePaperTrailResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class EnablePaperTrailResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Errors.cs b/PlexAPI/Models/Requests/Errors.cs new file mode 100644 index 0000000..6bfca9f --- /dev/null +++ b/PlexAPI/Models/Requests/Errors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Errors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Force.cs b/PlexAPI/Models/Requests/Force.cs new file mode 100644 index 0000000..77b59a5 --- /dev/null +++ b/PlexAPI/Models/Requests/Force.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
+ /// + /// + /// The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
+ /// + ///
+ ///
+ public enum Force + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Genre.cs b/PlexAPI/Models/Requests/Genre.cs new file mode 100644 index 0000000..c0f5377 --- /dev/null +++ b/PlexAPI/Models/Requests/Genre.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Genre + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetAvailableClientsErrors.cs b/PlexAPI/Models/Requests/GetAvailableClientsErrors.cs new file mode 100644 index 0000000..69df341 --- /dev/null +++ b/PlexAPI/Models/Requests/GetAvailableClientsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetAvailableClientsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetAvailableClientsMediaContainer.cs b/PlexAPI/Models/Requests/GetAvailableClientsMediaContainer.cs new file mode 100644 index 0000000..5dc7ea1 --- /dev/null +++ b/PlexAPI/Models/Requests/GetAvailableClientsMediaContainer.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetAvailableClientsMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("Server")] + public List? Server { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetAvailableClientsResponse.cs b/PlexAPI/Models/Requests/GetAvailableClientsResponse.cs new file mode 100644 index 0000000..3b54663 --- /dev/null +++ b/PlexAPI/Models/Requests/GetAvailableClientsResponse.cs @@ -0,0 +1,45 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Collections.Generic; + using System.Net.Http; + using System; + + public class GetAvailableClientsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Available Clients + /// + public List? ResponseBodies { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetAvailableClientsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetAvailableClientsResponseBody.cs b/PlexAPI/Models/Requests/GetAvailableClientsResponseBody.cs new file mode 100644 index 0000000..523a4b5 --- /dev/null +++ b/PlexAPI/Models/Requests/GetAvailableClientsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetAvailableClientsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetButlerTasksButlerResponseBody.cs b/PlexAPI/Models/Requests/GetButlerTasksButlerResponseBody.cs new file mode 100644 index 0000000..6ed69ff --- /dev/null +++ b/PlexAPI/Models/Requests/GetButlerTasksButlerResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetButlerTasksButlerResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetButlerTasksErrors.cs b/PlexAPI/Models/Requests/GetButlerTasksErrors.cs new file mode 100644 index 0000000..8d0b7d4 --- /dev/null +++ b/PlexAPI/Models/Requests/GetButlerTasksErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetButlerTasksErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetButlerTasksResponse.cs b/PlexAPI/Models/Requests/GetButlerTasksResponse.cs new file mode 100644 index 0000000..11badb7 --- /dev/null +++ b/PlexAPI/Models/Requests/GetButlerTasksResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetButlerTasksResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// All butler tasks + /// + public GetButlerTasksResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetButlerTasksButlerResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetButlerTasksResponseBody.cs b/PlexAPI/Models/Requests/GetButlerTasksResponseBody.cs new file mode 100644 index 0000000..1c0625e --- /dev/null +++ b/PlexAPI/Models/Requests/GetButlerTasksResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// All butler tasks + /// + public class GetButlerTasksResponseBody + { + + [JsonProperty("ButlerTasks")] + public ButlerTasks? ButlerTasks { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetCommonLibraryItemsErrors.cs b/PlexAPI/Models/Requests/GetCommonLibraryItemsErrors.cs new file mode 100644 index 0000000..2b5300e --- /dev/null +++ b/PlexAPI/Models/Requests/GetCommonLibraryItemsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetCommonLibraryItemsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetCommonLibraryItemsRequest.cs b/PlexAPI/Models/Requests/GetCommonLibraryItemsRequest.cs new file mode 100644 index 0000000..e66c5f5 --- /dev/null +++ b/PlexAPI/Models/Requests/GetCommonLibraryItemsRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetCommonLibraryItemsRequest + { + + /// + /// the Id of the library to query + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + + /// + /// item type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public double Type { get; set; } = default!; + + /// + /// the filter parameter + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] + public string? Filter { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetCommonLibraryItemsResponse.cs b/PlexAPI/Models/Requests/GetCommonLibraryItemsResponse.cs new file mode 100644 index 0000000..28bebc1 --- /dev/null +++ b/PlexAPI/Models/Requests/GetCommonLibraryItemsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetCommonLibraryItemsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetCommonLibraryItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetCommonLibraryItemsResponseBody.cs b/PlexAPI/Models/Requests/GetCommonLibraryItemsResponseBody.cs new file mode 100644 index 0000000..bd3f50b --- /dev/null +++ b/PlexAPI/Models/Requests/GetCommonLibraryItemsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetCommonLibraryItemsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetDevicesErrors.cs b/PlexAPI/Models/Requests/GetDevicesErrors.cs new file mode 100644 index 0000000..880464d --- /dev/null +++ b/PlexAPI/Models/Requests/GetDevicesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetDevicesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetDevicesMediaContainer.cs b/PlexAPI/Models/Requests/GetDevicesMediaContainer.cs new file mode 100644 index 0000000..7aa4d39 --- /dev/null +++ b/PlexAPI/Models/Requests/GetDevicesMediaContainer.cs @@ -0,0 +1,28 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetDevicesMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("Device")] + public List? Device { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetDevicesResponse.cs b/PlexAPI/Models/Requests/GetDevicesResponse.cs new file mode 100644 index 0000000..331292c --- /dev/null +++ b/PlexAPI/Models/Requests/GetDevicesResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetDevicesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Devices + /// + public GetDevicesResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetDevicesServerResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetDevicesResponseBody.cs b/PlexAPI/Models/Requests/GetDevicesResponseBody.cs new file mode 100644 index 0000000..9ab83da --- /dev/null +++ b/PlexAPI/Models/Requests/GetDevicesResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// Devices + /// + public class GetDevicesResponseBody + { + + [JsonProperty("MediaContainer")] + public GetDevicesMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetDevicesServerResponseBody.cs b/PlexAPI/Models/Requests/GetDevicesServerResponseBody.cs new file mode 100644 index 0000000..568c8fc --- /dev/null +++ b/PlexAPI/Models/Requests/GetDevicesServerResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetDevicesServerResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetFileHashErrors.cs b/PlexAPI/Models/Requests/GetFileHashErrors.cs new file mode 100644 index 0000000..b98f664 --- /dev/null +++ b/PlexAPI/Models/Requests/GetFileHashErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetFileHashErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetFileHashRequest.cs b/PlexAPI/Models/Requests/GetFileHashRequest.cs new file mode 100644 index 0000000..bf75f20 --- /dev/null +++ b/PlexAPI/Models/Requests/GetFileHashRequest.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetFileHashRequest + { + + /// + /// This is the path to the local file, must be prefixed by `file://` + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string Url { get; set; } = default!; + + /// + /// Item type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public double? Type { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetFileHashResponse.cs b/PlexAPI/Models/Requests/GetFileHashResponse.cs new file mode 100644 index 0000000..bb18e2a --- /dev/null +++ b/PlexAPI/Models/Requests/GetFileHashResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetFileHashResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetFileHashResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetFileHashResponseBody.cs b/PlexAPI/Models/Requests/GetFileHashResponseBody.cs new file mode 100644 index 0000000..485299f --- /dev/null +++ b/PlexAPI/Models/Requests/GetFileHashResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetFileHashResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetGlobalHubsErrors.cs b/PlexAPI/Models/Requests/GetGlobalHubsErrors.cs new file mode 100644 index 0000000..7a6cc6b --- /dev/null +++ b/PlexAPI/Models/Requests/GetGlobalHubsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetGlobalHubsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetGlobalHubsRequest.cs b/PlexAPI/Models/Requests/GetGlobalHubsRequest.cs new file mode 100644 index 0000000..afd865d --- /dev/null +++ b/PlexAPI/Models/Requests/GetGlobalHubsRequest.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetGlobalHubsRequest + { + + /// + /// The number of items to return with each hub. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public double? Count { get; set; } + + /// + /// Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")] + public OnlyTransient? OnlyTransient { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetGlobalHubsResponse.cs b/PlexAPI/Models/Requests/GetGlobalHubsResponse.cs new file mode 100644 index 0000000..2df48d4 --- /dev/null +++ b/PlexAPI/Models/Requests/GetGlobalHubsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetGlobalHubsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetGlobalHubsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetGlobalHubsResponseBody.cs b/PlexAPI/Models/Requests/GetGlobalHubsResponseBody.cs new file mode 100644 index 0000000..8fcdec3 --- /dev/null +++ b/PlexAPI/Models/Requests/GetGlobalHubsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetGlobalHubsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLatestLibraryItemsErrors.cs b/PlexAPI/Models/Requests/GetLatestLibraryItemsErrors.cs new file mode 100644 index 0000000..1f31aae --- /dev/null +++ b/PlexAPI/Models/Requests/GetLatestLibraryItemsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetLatestLibraryItemsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLatestLibraryItemsRequest.cs b/PlexAPI/Models/Requests/GetLatestLibraryItemsRequest.cs new file mode 100644 index 0000000..6e602ab --- /dev/null +++ b/PlexAPI/Models/Requests/GetLatestLibraryItemsRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetLatestLibraryItemsRequest + { + + /// + /// the Id of the library to query + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + + /// + /// item type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public double Type { get; set; } = default!; + + /// + /// the filter parameter + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] + public string? Filter { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLatestLibraryItemsResponse.cs b/PlexAPI/Models/Requests/GetLatestLibraryItemsResponse.cs new file mode 100644 index 0000000..0577d41 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLatestLibraryItemsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetLatestLibraryItemsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetLatestLibraryItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLatestLibraryItemsResponseBody.cs b/PlexAPI/Models/Requests/GetLatestLibraryItemsResponseBody.cs new file mode 100644 index 0000000..096ee9f --- /dev/null +++ b/PlexAPI/Models/Requests/GetLatestLibraryItemsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetLatestLibraryItemsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibrariesErrors.cs b/PlexAPI/Models/Requests/GetLibrariesErrors.cs new file mode 100644 index 0000000..a9fba48 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibrariesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetLibrariesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibrariesResponse.cs b/PlexAPI/Models/Requests/GetLibrariesResponse.cs new file mode 100644 index 0000000..f1f23ad --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibrariesResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetLibrariesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetLibrariesResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibrariesResponseBody.cs b/PlexAPI/Models/Requests/GetLibrariesResponseBody.cs new file mode 100644 index 0000000..ee1520e --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibrariesResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetLibrariesResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryErrors.cs b/PlexAPI/Models/Requests/GetLibraryErrors.cs new file mode 100644 index 0000000..18526b2 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetLibraryErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryHubsErrors.cs b/PlexAPI/Models/Requests/GetLibraryHubsErrors.cs new file mode 100644 index 0000000..e58defd --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryHubsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetLibraryHubsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryHubsRequest.cs b/PlexAPI/Models/Requests/GetLibraryHubsRequest.cs new file mode 100644 index 0000000..1e5e994 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryHubsRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetLibraryHubsRequest + { + + /// + /// the Id of the library to query + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + + /// + /// The number of items to return with each hub. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public double? Count { get; set; } + + /// + /// Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")] + public QueryParamOnlyTransient? OnlyTransient { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryHubsResponse.cs b/PlexAPI/Models/Requests/GetLibraryHubsResponse.cs new file mode 100644 index 0000000..6832618 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryHubsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetLibraryHubsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetLibraryHubsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryHubsResponseBody.cs b/PlexAPI/Models/Requests/GetLibraryHubsResponseBody.cs new file mode 100644 index 0000000..f7306b2 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryHubsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetLibraryHubsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryItemsErrors.cs b/PlexAPI/Models/Requests/GetLibraryItemsErrors.cs new file mode 100644 index 0000000..ca68265 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryItemsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetLibraryItemsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryItemsRequest.cs b/PlexAPI/Models/Requests/GetLibraryItemsRequest.cs new file mode 100644 index 0000000..d1b03a2 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryItemsRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetLibraryItemsRequest + { + + /// + /// the Id of the library to query + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + + /// + /// item type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public double? Type { get; set; } + + /// + /// the filter parameter + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] + public string? Filter { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryItemsResponse.cs b/PlexAPI/Models/Requests/GetLibraryItemsResponse.cs new file mode 100644 index 0000000..27e5487 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryItemsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetLibraryItemsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetLibraryItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryItemsResponseBody.cs b/PlexAPI/Models/Requests/GetLibraryItemsResponseBody.cs new file mode 100644 index 0000000..16106e8 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryItemsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetLibraryItemsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryRequest.cs b/PlexAPI/Models/Requests/GetLibraryRequest.cs new file mode 100644 index 0000000..c2e5920 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryRequest.cs @@ -0,0 +1,35 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetLibraryRequest + { + + /// + /// the Id of the library to query + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + + /// + /// Whether or not to include details for a section (types, filters, and sorts).
+ /// + /// + /// Only exists for backwards compatibility, media providers other than the server libraries have it on always.
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeDetails")] + public IncludeDetails? IncludeDetails { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryResponse.cs b/PlexAPI/Models/Requests/GetLibraryResponse.cs new file mode 100644 index 0000000..8d557bd --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetLibraryResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetLibraryResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetLibraryResponseBody.cs b/PlexAPI/Models/Requests/GetLibraryResponseBody.cs new file mode 100644 index 0000000..8e55181 --- /dev/null +++ b/PlexAPI/Models/Requests/GetLibraryResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetLibraryResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataChildrenErrors.cs b/PlexAPI/Models/Requests/GetMetadataChildrenErrors.cs new file mode 100644 index 0000000..ab91f8d --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataChildrenErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetMetadataChildrenErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs b/PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs new file mode 100644 index 0000000..e8bc562 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetMetadataChildrenRequest + { + + /// + /// the id of the library item to return the children of. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] + public double RatingKey { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs b/PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs new file mode 100644 index 0000000..e78a991 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetMetadataChildrenResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetMetadataChildrenResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs b/PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs new file mode 100644 index 0000000..43042e9 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetMetadataChildrenResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataErrors.cs b/PlexAPI/Models/Requests/GetMetadataErrors.cs new file mode 100644 index 0000000..ba9cc77 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetMetadataErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataRequest.cs b/PlexAPI/Models/Requests/GetMetadataRequest.cs new file mode 100644 index 0000000..b9dab87 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetMetadataRequest + { + + /// + /// the id of the library item to return the children of. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] + public double RatingKey { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataResponse.cs b/PlexAPI/Models/Requests/GetMetadataResponse.cs new file mode 100644 index 0000000..292dbc1 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetMetadataResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetMetadataResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMetadataResponseBody.cs b/PlexAPI/Models/Requests/GetMetadataResponseBody.cs new file mode 100644 index 0000000..5bd9e39 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMetadataResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetMetadataResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMyPlexAccountErrors.cs b/PlexAPI/Models/Requests/GetMyPlexAccountErrors.cs new file mode 100644 index 0000000..2aa7187 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMyPlexAccountErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetMyPlexAccountErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMyPlexAccountResponse.cs b/PlexAPI/Models/Requests/GetMyPlexAccountResponse.cs new file mode 100644 index 0000000..ea63f37 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMyPlexAccountResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetMyPlexAccountResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// MyPlex Account + /// + public GetMyPlexAccountResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetMyPlexAccountServerResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMyPlexAccountResponseBody.cs b/PlexAPI/Models/Requests/GetMyPlexAccountResponseBody.cs new file mode 100644 index 0000000..7b42333 --- /dev/null +++ b/PlexAPI/Models/Requests/GetMyPlexAccountResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// MyPlex Account + /// + public class GetMyPlexAccountResponseBody + { + + [JsonProperty("MyPlex")] + public MyPlex? MyPlex { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetMyPlexAccountServerResponseBody.cs b/PlexAPI/Models/Requests/GetMyPlexAccountServerResponseBody.cs new file mode 100644 index 0000000..cbefbaa --- /dev/null +++ b/PlexAPI/Models/Requests/GetMyPlexAccountServerResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetMyPlexAccountServerResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckErrors.cs b/PlexAPI/Models/Requests/GetOnDeckErrors.cs new file mode 100644 index 0000000..e195888 --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetOnDeckErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckLibraryResponseBody.cs b/PlexAPI/Models/Requests/GetOnDeckLibraryResponseBody.cs new file mode 100644 index 0000000..9dc67a2 --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckLibraryResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetOnDeckLibraryResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckMedia.cs b/PlexAPI/Models/Requests/GetOnDeckMedia.cs new file mode 100644 index 0000000..599bd6d --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckMedia.cs @@ -0,0 +1,64 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetOnDeckMedia + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("bitrate")] + public double? Bitrate { get; set; } + + [JsonProperty("width")] + public double? Width { get; set; } + + [JsonProperty("height")] + public double? Height { get; set; } + + [JsonProperty("aspectRatio")] + public double? AspectRatio { get; set; } + + [JsonProperty("audioChannels")] + public double? AudioChannels { get; set; } + + [JsonProperty("audioCodec")] + public string? AudioCodec { get; set; } + + [JsonProperty("videoCodec")] + public string? VideoCodec { get; set; } + + [JsonProperty("videoResolution")] + public string? VideoResolution { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("videoFrameRate")] + public string? VideoFrameRate { get; set; } + + [JsonProperty("audioProfile")] + public string? AudioProfile { get; set; } + + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + + [JsonProperty("Part")] + public List? Part { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs b/PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs new file mode 100644 index 0000000..3ccacca --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs @@ -0,0 +1,40 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetOnDeckMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("mediaTagPrefix")] + public string? MediaTagPrefix { get; set; } + + [JsonProperty("mediaTagVersion")] + public double? MediaTagVersion { get; set; } + + [JsonProperty("mixedParents")] + public bool? MixedParents { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckMetadata.cs b/PlexAPI/Models/Requests/GetOnDeckMetadata.cs new file mode 100644 index 0000000..2b1ac66 --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckMetadata.cs @@ -0,0 +1,128 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + using System; + + public class GetOnDeckMetadata + { + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("librarySectionID")] + public double? LibrarySectionID { get; set; } + + [JsonProperty("librarySectionTitle")] + public string? LibrarySectionTitle { get; set; } + + [JsonProperty("librarySectionUUID")] + public string? LibrarySectionUUID { get; set; } + + [JsonProperty("ratingKey")] + public double? RatingKey { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("parentRatingKey")] + public double? ParentRatingKey { get; set; } + + [JsonProperty("grandparentRatingKey")] + public double? GrandparentRatingKey { get; set; } + + [JsonProperty("guid")] + public string? Guid { get; set; } + + [JsonProperty("parentGuid")] + public string? ParentGuid { get; set; } + + [JsonProperty("grandparentGuid")] + public string? GrandparentGuid { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + [JsonProperty("librarySectionKey")] + public string? LibrarySectionKey { get; set; } + + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + [JsonProperty("contentRating")] + public string? ContentRating { get; set; } + + [JsonProperty("summary")] + public string? Summary { get; set; } + + [JsonProperty("index")] + public double? Index { get; set; } + + [JsonProperty("parentIndex")] + public double? ParentIndex { get; set; } + + [JsonProperty("lastViewedAt")] + public double? LastViewedAt { get; set; } + + [JsonProperty("year")] + public double? Year { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("originallyAvailableAt")] + public DateTime? OriginallyAvailableAt { get; set; } + + [JsonProperty("addedAt")] + public double? AddedAt { get; set; } + + [JsonProperty("updatedAt")] + public double? UpdatedAt { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + [JsonProperty("Guid")] + public List? Guids { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckPart.cs b/PlexAPI/Models/Requests/GetOnDeckPart.cs new file mode 100644 index 0000000..d0a3633 --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckPart.cs @@ -0,0 +1,46 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetOnDeckPart + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("file")] + public string? File { get; set; } + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("audioProfile")] + public string? AudioProfile { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + + [JsonProperty("Stream")] + public List? Stream { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckResponse.cs b/PlexAPI/Models/Requests/GetOnDeckResponse.cs new file mode 100644 index 0000000..7f5a6f8 --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetOnDeckResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// The on Deck content + /// + public GetOnDeckResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetOnDeckLibraryResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetOnDeckResponseBody.cs b/PlexAPI/Models/Requests/GetOnDeckResponseBody.cs new file mode 100644 index 0000000..4516adb --- /dev/null +++ b/PlexAPI/Models/Requests/GetOnDeckResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// The on Deck content + /// + public class GetOnDeckResponseBody + { + + [JsonProperty("MediaContainer")] + public GetOnDeckMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistContentsErrors.cs b/PlexAPI/Models/Requests/GetPlaylistContentsErrors.cs new file mode 100644 index 0000000..470eeab --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistContentsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetPlaylistContentsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs b/PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs new file mode 100644 index 0000000..4702fa5 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetPlaylistContentsRequest + { + + /// + /// the ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] + public double PlaylistID { get; set; } = default!; + + /// + /// the metadata type of the item to return + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public double Type { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistContentsResponse.cs b/PlexAPI/Models/Requests/GetPlaylistContentsResponse.cs new file mode 100644 index 0000000..aa4ab5a --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistContentsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetPlaylistContentsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetPlaylistContentsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistContentsResponseBody.cs b/PlexAPI/Models/Requests/GetPlaylistContentsResponseBody.cs new file mode 100644 index 0000000..3685ef7 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistContentsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetPlaylistContentsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistErrors.cs b/PlexAPI/Models/Requests/GetPlaylistErrors.cs new file mode 100644 index 0000000..f907ab6 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetPlaylistErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistRequest.cs b/PlexAPI/Models/Requests/GetPlaylistRequest.cs new file mode 100644 index 0000000..8154347 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetPlaylistRequest + { + + /// + /// the ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] + public double PlaylistID { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistResponse.cs b/PlexAPI/Models/Requests/GetPlaylistResponse.cs new file mode 100644 index 0000000..703e361 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetPlaylistResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetPlaylistResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistResponseBody.cs b/PlexAPI/Models/Requests/GetPlaylistResponseBody.cs new file mode 100644 index 0000000..e7f28f1 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetPlaylistResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistsErrors.cs b/PlexAPI/Models/Requests/GetPlaylistsErrors.cs new file mode 100644 index 0000000..fd4d183 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetPlaylistsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistsRequest.cs b/PlexAPI/Models/Requests/GetPlaylistsRequest.cs new file mode 100644 index 0000000..5e26570 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistsRequest.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetPlaylistsRequest + { + + /// + /// limit to a type of playlist. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playlistType")] + public PlaylistType? PlaylistType { get; set; } + + /// + /// type of playlists to return (default is all). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=smart")] + public QueryParamSmart? Smart { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistsResponse.cs b/PlexAPI/Models/Requests/GetPlaylistsResponse.cs new file mode 100644 index 0000000..1d12c60 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetPlaylistsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetPlaylistsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetPlaylistsResponseBody.cs b/PlexAPI/Models/Requests/GetPlaylistsResponseBody.cs new file mode 100644 index 0000000..6924055 --- /dev/null +++ b/PlexAPI/Models/Requests/GetPlaylistsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetPlaylistsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetRecentlyAddedErrors.cs b/PlexAPI/Models/Requests/GetRecentlyAddedErrors.cs new file mode 100644 index 0000000..21137ea --- /dev/null +++ b/PlexAPI/Models/Requests/GetRecentlyAddedErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetRecentlyAddedErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs b/PlexAPI/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs new file mode 100644 index 0000000..a4af190 --- /dev/null +++ b/PlexAPI/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetRecentlyAddedLibraryResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetRecentlyAddedMediaContainer.cs b/PlexAPI/Models/Requests/GetRecentlyAddedMediaContainer.cs new file mode 100644 index 0000000..1796c1d --- /dev/null +++ b/PlexAPI/Models/Requests/GetRecentlyAddedMediaContainer.cs @@ -0,0 +1,40 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetRecentlyAddedMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("mediaTagPrefix")] + public string? MediaTagPrefix { get; set; } + + [JsonProperty("mediaTagVersion")] + public double? MediaTagVersion { get; set; } + + [JsonProperty("mixedParents")] + public bool? MixedParents { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetRecentlyAddedResponse.cs b/PlexAPI/Models/Requests/GetRecentlyAddedResponse.cs new file mode 100644 index 0000000..c2de1ff --- /dev/null +++ b/PlexAPI/Models/Requests/GetRecentlyAddedResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetRecentlyAddedResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// The recently added content + /// + public GetRecentlyAddedResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetRecentlyAddedLibraryResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetRecentlyAddedResponseBody.cs b/PlexAPI/Models/Requests/GetRecentlyAddedResponseBody.cs new file mode 100644 index 0000000..4344c0b --- /dev/null +++ b/PlexAPI/Models/Requests/GetRecentlyAddedResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// The recently added content + /// + public class GetRecentlyAddedResponseBody + { + + [JsonProperty("MediaContainer")] + public GetRecentlyAddedMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetResizedPhotoErrors.cs b/PlexAPI/Models/Requests/GetResizedPhotoErrors.cs new file mode 100644 index 0000000..4a9e5e5 --- /dev/null +++ b/PlexAPI/Models/Requests/GetResizedPhotoErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetResizedPhotoErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetResizedPhotoRequest.cs b/PlexAPI/Models/Requests/GetResizedPhotoRequest.cs new file mode 100644 index 0000000..70d1b7e --- /dev/null +++ b/PlexAPI/Models/Requests/GetResizedPhotoRequest.cs @@ -0,0 +1,60 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetResizedPhotoRequest + { + + /// + /// The width for the resized photo + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")] + public double Width { get; set; } = default!; + + /// + /// The height for the resized photo + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")] + public double Height { get; set; } = default!; + + /// + /// The opacity for the resized photo + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=opacity")] + public long Opacity { get; set; } = default!; + + /// + /// The width for the resized photo + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=blur")] + public double Blur { get; set; } = default!; + + /// + /// images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=minSize")] + public MinSize MinSize { get; set; } = default!; + + /// + /// allow images to be resized beyond native dimensions. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=upscale")] + public Upscale Upscale { get; set; } = default!; + + /// + /// path to image within Plex + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string Url { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetResizedPhotoResponse.cs b/PlexAPI/Models/Requests/GetResizedPhotoResponse.cs new file mode 100644 index 0000000..ba8d9c0 --- /dev/null +++ b/PlexAPI/Models/Requests/GetResizedPhotoResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetResizedPhotoResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetResizedPhotoResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetResizedPhotoResponseBody.cs b/PlexAPI/Models/Requests/GetResizedPhotoResponseBody.cs new file mode 100644 index 0000000..683fe55 --- /dev/null +++ b/PlexAPI/Models/Requests/GetResizedPhotoResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetResizedPhotoResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsCountry.cs b/PlexAPI/Models/Requests/GetSearchResultsCountry.cs new file mode 100644 index 0000000..2d83fb0 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsCountry.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsCountry + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsDirector.cs b/PlexAPI/Models/Requests/GetSearchResultsDirector.cs new file mode 100644 index 0000000..ac49ebf --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsDirector.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsDirector + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsErrors.cs b/PlexAPI/Models/Requests/GetSearchResultsErrors.cs new file mode 100644 index 0000000..97d9cbd --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsGenre.cs b/PlexAPI/Models/Requests/GetSearchResultsGenre.cs new file mode 100644 index 0000000..98f5f21 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsGenre.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsGenre + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsMedia.cs b/PlexAPI/Models/Requests/GetSearchResultsMedia.cs new file mode 100644 index 0000000..05d567d --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsMedia.cs @@ -0,0 +1,64 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetSearchResultsMedia + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("bitrate")] + public double? Bitrate { get; set; } + + [JsonProperty("width")] + public double? Width { get; set; } + + [JsonProperty("height")] + public double? Height { get; set; } + + [JsonProperty("aspectRatio")] + public double? AspectRatio { get; set; } + + [JsonProperty("audioChannels")] + public double? AudioChannels { get; set; } + + [JsonProperty("audioCodec")] + public string? AudioCodec { get; set; } + + [JsonProperty("videoCodec")] + public string? VideoCodec { get; set; } + + [JsonProperty("videoResolution")] + public double? VideoResolution { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("videoFrameRate")] + public string? VideoFrameRate { get; set; } + + [JsonProperty("audioProfile")] + public string? AudioProfile { get; set; } + + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + + [JsonProperty("Part")] + public List? Part { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsMediaContainer.cs b/PlexAPI/Models/Requests/GetSearchResultsMediaContainer.cs new file mode 100644 index 0000000..721be51 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsMediaContainer.cs @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetSearchResultsMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("mediaTagPrefix")] + public string? MediaTagPrefix { get; set; } + + [JsonProperty("mediaTagVersion")] + public double? MediaTagVersion { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + + [JsonProperty("Provider")] + public List? Provider { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsMetadata.cs b/PlexAPI/Models/Requests/GetSearchResultsMetadata.cs new file mode 100644 index 0000000..21f6bb4 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsMetadata.cs @@ -0,0 +1,122 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + using System; + + public class GetSearchResultsMetadata + { + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("librarySectionID")] + public double? LibrarySectionID { get; set; } + + [JsonProperty("librarySectionTitle")] + public string? LibrarySectionTitle { get; set; } + + [JsonProperty("librarySectionUUID")] + public string? LibrarySectionUUID { get; set; } + + [JsonProperty("personal")] + public bool? Personal { get; set; } + + [JsonProperty("sourceTitle")] + public string? SourceTitle { get; set; } + + [JsonProperty("ratingKey")] + public double? RatingKey { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("guid")] + public string? Guid { get; set; } + + [JsonProperty("studio")] + public string? Studio { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("contentRating")] + public string? ContentRating { get; set; } + + [JsonProperty("summary")] + public string? Summary { get; set; } + + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + [JsonProperty("year")] + public double? Year { get; set; } + + [JsonProperty("tagline")] + public string? Tagline { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("originallyAvailableAt")] + public DateTime? OriginallyAvailableAt { get; set; } + + [JsonProperty("addedAt")] + public double? AddedAt { get; set; } + + [JsonProperty("updatedAt")] + public double? UpdatedAt { get; set; } + + [JsonProperty("audienceRatingImage")] + public string? AudienceRatingImage { get; set; } + + [JsonProperty("chapterSource")] + public string? ChapterSource { get; set; } + + [JsonProperty("primaryExtraKey")] + public string? PrimaryExtraKey { get; set; } + + [JsonProperty("ratingImage")] + public string? RatingImage { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsPart.cs b/PlexAPI/Models/Requests/GetSearchResultsPart.cs new file mode 100644 index 0000000..6119db8 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsPart.cs @@ -0,0 +1,42 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsPart + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("file")] + public string? File { get; set; } + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("audioProfile")] + public string? AudioProfile { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsRequest.cs b/PlexAPI/Models/Requests/GetSearchResultsRequest.cs new file mode 100644 index 0000000..9833f9e --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetSearchResultsRequest + { + + /// + /// The search query string to use + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")] + public string Query { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsResponse.cs b/PlexAPI/Models/Requests/GetSearchResultsResponse.cs new file mode 100644 index 0000000..d9a01ac --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetSearchResultsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Search Results + /// + public GetSearchResultsResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetSearchResultsSearchResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsResponseBody.cs b/PlexAPI/Models/Requests/GetSearchResultsResponseBody.cs new file mode 100644 index 0000000..110be00 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// Search Results + /// + public class GetSearchResultsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetSearchResultsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsRole.cs b/PlexAPI/Models/Requests/GetSearchResultsRole.cs new file mode 100644 index 0000000..74606e8 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsRole.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsRole + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsSearchResponseBody.cs b/PlexAPI/Models/Requests/GetSearchResultsSearchResponseBody.cs new file mode 100644 index 0000000..7040de7 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsSearchResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetSearchResultsSearchResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSearchResultsWriter.cs b/PlexAPI/Models/Requests/GetSearchResultsWriter.cs new file mode 100644 index 0000000..5d5a645 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSearchResultsWriter.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSearchResultsWriter + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerActivitiesActivitiesResponseBody.cs b/PlexAPI/Models/Requests/GetServerActivitiesActivitiesResponseBody.cs new file mode 100644 index 0000000..9363ce9 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerActivitiesActivitiesResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetServerActivitiesActivitiesResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerActivitiesErrors.cs b/PlexAPI/Models/Requests/GetServerActivitiesErrors.cs new file mode 100644 index 0000000..0723ee6 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerActivitiesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetServerActivitiesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerActivitiesMediaContainer.cs b/PlexAPI/Models/Requests/GetServerActivitiesMediaContainer.cs new file mode 100644 index 0000000..bb1e706 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerActivitiesMediaContainer.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetServerActivitiesMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("Activity")] + public List? Activity { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerActivitiesResponse.cs b/PlexAPI/Models/Requests/GetServerActivitiesResponse.cs new file mode 100644 index 0000000..54e6924 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerActivitiesResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetServerActivitiesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// The Server Activities + /// + public GetServerActivitiesResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetServerActivitiesActivitiesResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerActivitiesResponseBody.cs b/PlexAPI/Models/Requests/GetServerActivitiesResponseBody.cs new file mode 100644 index 0000000..39b8b3c --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerActivitiesResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// The Server Activities + /// + public class GetServerActivitiesResponseBody + { + + [JsonProperty("MediaContainer")] + public GetServerActivitiesMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerCapabilitiesResponse.cs b/PlexAPI/Models/Requests/GetServerCapabilitiesResponse.cs new file mode 100644 index 0000000..dcca9bd --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerCapabilitiesResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetServerCapabilitiesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// The Server Capabilities + /// + public GetServerCapabilitiesResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetServerCapabilitiesServerResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerCapabilitiesResponseBody.cs b/PlexAPI/Models/Requests/GetServerCapabilitiesResponseBody.cs new file mode 100644 index 0000000..5ba99b1 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerCapabilitiesResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// The Server Capabilities + /// + public class GetServerCapabilitiesResponseBody + { + + [JsonProperty("MediaContainer")] + public MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerCapabilitiesServerResponseBody.cs b/PlexAPI/Models/Requests/GetServerCapabilitiesServerResponseBody.cs new file mode 100644 index 0000000..bad709c --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerCapabilitiesServerResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetServerCapabilitiesServerResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerIdentityErrors.cs b/PlexAPI/Models/Requests/GetServerIdentityErrors.cs new file mode 100644 index 0000000..e3ee569 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerIdentityErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetServerIdentityErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerIdentityMediaContainer.cs b/PlexAPI/Models/Requests/GetServerIdentityMediaContainer.cs new file mode 100644 index 0000000..45c1132 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerIdentityMediaContainer.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetServerIdentityMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("claimed")] + public bool? Claimed { get; set; } + + [JsonProperty("machineIdentifier")] + public string? MachineIdentifier { get; set; } + + [JsonProperty("version")] + public string? Version { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerIdentityResponse.cs b/PlexAPI/Models/Requests/GetServerIdentityResponse.cs new file mode 100644 index 0000000..1584341 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerIdentityResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetServerIdentityResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// The Transcode Sessions + /// + public GetServerIdentityResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetServerIdentityServerResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerIdentityResponseBody.cs b/PlexAPI/Models/Requests/GetServerIdentityResponseBody.cs new file mode 100644 index 0000000..cfe3a39 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerIdentityResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// The Transcode Sessions + /// + public class GetServerIdentityResponseBody + { + + [JsonProperty("MediaContainer")] + public GetServerIdentityMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerIdentityServerResponseBody.cs b/PlexAPI/Models/Requests/GetServerIdentityServerResponseBody.cs new file mode 100644 index 0000000..e82b40d --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerIdentityServerResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetServerIdentityServerResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerListErrors.cs b/PlexAPI/Models/Requests/GetServerListErrors.cs new file mode 100644 index 0000000..2abd5e6 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerListErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetServerListErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerListMediaContainer.cs b/PlexAPI/Models/Requests/GetServerListMediaContainer.cs new file mode 100644 index 0000000..6790153 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerListMediaContainer.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetServerListMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("Server")] + public List? Server { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerListResponse.cs b/PlexAPI/Models/Requests/GetServerListResponse.cs new file mode 100644 index 0000000..ffc04cc --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerListResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetServerListResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// List of Servers + /// + public GetServerListResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetServerListServerResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerListResponseBody.cs b/PlexAPI/Models/Requests/GetServerListResponseBody.cs new file mode 100644 index 0000000..fd81d91 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerListResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// List of Servers + /// + public class GetServerListResponseBody + { + + [JsonProperty("MediaContainer")] + public GetServerListMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerListServer.cs b/PlexAPI/Models/Requests/GetServerListServer.cs new file mode 100644 index 0000000..304789c --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerListServer.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetServerListServer + { + + [JsonProperty("name")] + public string? Name { get; set; } + + [JsonProperty("host")] + public string? Host { get; set; } + + [JsonProperty("address")] + public string? Address { get; set; } + + [JsonProperty("port")] + public double? Port { get; set; } + + [JsonProperty("machineIdentifier")] + public string? MachineIdentifier { get; set; } + + [JsonProperty("version")] + public string? Version { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerListServerResponseBody.cs b/PlexAPI/Models/Requests/GetServerListServerResponseBody.cs new file mode 100644 index 0000000..0c14b8a --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerListServerResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetServerListServerResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerPreferencesErrors.cs b/PlexAPI/Models/Requests/GetServerPreferencesErrors.cs new file mode 100644 index 0000000..aa8bfc8 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerPreferencesErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetServerPreferencesErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerPreferencesResponse.cs b/PlexAPI/Models/Requests/GetServerPreferencesResponse.cs new file mode 100644 index 0000000..6e1213d --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerPreferencesResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetServerPreferencesResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetServerPreferencesResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetServerPreferencesResponseBody.cs b/PlexAPI/Models/Requests/GetServerPreferencesResponseBody.cs new file mode 100644 index 0000000..a7932b6 --- /dev/null +++ b/PlexAPI/Models/Requests/GetServerPreferencesResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetServerPreferencesResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSessionHistoryErrors.cs b/PlexAPI/Models/Requests/GetSessionHistoryErrors.cs new file mode 100644 index 0000000..7f0d094 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSessionHistoryErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSessionHistoryErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSessionHistoryResponse.cs b/PlexAPI/Models/Requests/GetSessionHistoryResponse.cs new file mode 100644 index 0000000..954501d --- /dev/null +++ b/PlexAPI/Models/Requests/GetSessionHistoryResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetSessionHistoryResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetSessionHistoryResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSessionHistoryResponseBody.cs b/PlexAPI/Models/Requests/GetSessionHistoryResponseBody.cs new file mode 100644 index 0000000..0210955 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSessionHistoryResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetSessionHistoryResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSessionsErrors.cs b/PlexAPI/Models/Requests/GetSessionsErrors.cs new file mode 100644 index 0000000..63f53b7 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSessionsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSessionsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSessionsResponse.cs b/PlexAPI/Models/Requests/GetSessionsResponse.cs new file mode 100644 index 0000000..7923a73 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSessionsResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetSessionsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetSessionsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSessionsResponseBody.cs b/PlexAPI/Models/Requests/GetSessionsResponseBody.cs new file mode 100644 index 0000000..ec22211 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSessionsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetSessionsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSourceConnectionInformationErrors.cs b/PlexAPI/Models/Requests/GetSourceConnectionInformationErrors.cs new file mode 100644 index 0000000..9a53b84 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSourceConnectionInformationErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetSourceConnectionInformationErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs b/PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs new file mode 100644 index 0000000..bfc41ac --- /dev/null +++ b/PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetSourceConnectionInformationRequest + { + + /// + /// The source identifier with an included prefix. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=source")] + public string Source { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs b/PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs new file mode 100644 index 0000000..8b341ac --- /dev/null +++ b/PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetSourceConnectionInformationResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetSourceConnectionInformationResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetSourceConnectionInformationResponseBody.cs b/PlexAPI/Models/Requests/GetSourceConnectionInformationResponseBody.cs new file mode 100644 index 0000000..4b972f6 --- /dev/null +++ b/PlexAPI/Models/Requests/GetSourceConnectionInformationResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetSourceConnectionInformationResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTimelineErrors.cs b/PlexAPI/Models/Requests/GetTimelineErrors.cs new file mode 100644 index 0000000..de215f8 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTimelineErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetTimelineErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTimelineRequest.cs b/PlexAPI/Models/Requests/GetTimelineRequest.cs new file mode 100644 index 0000000..d79e47d --- /dev/null +++ b/PlexAPI/Models/Requests/GetTimelineRequest.cs @@ -0,0 +1,78 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetTimelineRequest + { + + /// + /// The rating key of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=ratingKey")] + public double RatingKey { get; set; } = default!; + + /// + /// The key of the media item to get the timeline for + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public string Key { get; set; } = default!; + + /// + /// The state of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=state")] + public State State { get; set; } = default!; + + /// + /// Whether the media item has MDE + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] + public double HasMDE { get; set; } = default!; + + /// + /// The time of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=time")] + public double Time { get; set; } = default!; + + /// + /// The duration of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=duration")] + public double Duration { get; set; } = default!; + + /// + /// The context of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=context")] + public string Context { get; set; } = default!; + + /// + /// The play queue item ID of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playQueueItemID")] + public double PlayQueueItemID { get; set; } = default!; + + /// + /// The playback time of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playBackTime")] + public double PlayBackTime { get; set; } = default!; + + /// + /// The row of the media item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=row")] + public double Row { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTimelineResponse.cs b/PlexAPI/Models/Requests/GetTimelineResponse.cs new file mode 100644 index 0000000..1f03c42 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTimelineResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetTimelineResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetTimelineResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTimelineResponseBody.cs b/PlexAPI/Models/Requests/GetTimelineResponseBody.cs new file mode 100644 index 0000000..1f8ceaa --- /dev/null +++ b/PlexAPI/Models/Requests/GetTimelineResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetTimelineResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTranscodeSessionsErrors.cs b/PlexAPI/Models/Requests/GetTranscodeSessionsErrors.cs new file mode 100644 index 0000000..582f8a3 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTranscodeSessionsErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetTranscodeSessionsErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTranscodeSessionsMediaContainer.cs b/PlexAPI/Models/Requests/GetTranscodeSessionsMediaContainer.cs new file mode 100644 index 0000000..3182faf --- /dev/null +++ b/PlexAPI/Models/Requests/GetTranscodeSessionsMediaContainer.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetTranscodeSessionsMediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("TranscodeSession")] + public List? TranscodeSession { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTranscodeSessionsResponse.cs b/PlexAPI/Models/Requests/GetTranscodeSessionsResponse.cs new file mode 100644 index 0000000..987c787 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTranscodeSessionsResponse.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetTranscodeSessionsResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// The Transcode Sessions + /// + public GetTranscodeSessionsResponseBody? TwoHundredApplicationJsonObject { get; set; } + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetTranscodeSessionsSessionsResponseBody? FourHundredAndOneApplicationJsonObject { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTranscodeSessionsResponseBody.cs b/PlexAPI/Models/Requests/GetTranscodeSessionsResponseBody.cs new file mode 100644 index 0000000..409a5f9 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTranscodeSessionsResponseBody.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + /// + /// The Transcode Sessions + /// + public class GetTranscodeSessionsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetTranscodeSessionsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTranscodeSessionsSessionsResponseBody.cs b/PlexAPI/Models/Requests/GetTranscodeSessionsSessionsResponseBody.cs new file mode 100644 index 0000000..b8e0991 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTranscodeSessionsSessionsResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetTranscodeSessionsSessionsResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTransientTokenErrors.cs b/PlexAPI/Models/Requests/GetTransientTokenErrors.cs new file mode 100644 index 0000000..796f326 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTransientTokenErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetTransientTokenErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTransientTokenRequest.cs b/PlexAPI/Models/Requests/GetTransientTokenRequest.cs new file mode 100644 index 0000000..fb55da1 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTransientTokenRequest.cs @@ -0,0 +1,30 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class GetTransientTokenRequest + { + + /// + /// `delegation` - This is the only supported `type` parameter. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public QueryParamType Type { get; set; } = default!; + + /// + /// `all` - This is the only supported `scope` parameter. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=scope")] + public Scope Scope { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTransientTokenResponse.cs b/PlexAPI/Models/Requests/GetTransientTokenResponse.cs new file mode 100644 index 0000000..1cf27db --- /dev/null +++ b/PlexAPI/Models/Requests/GetTransientTokenResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetTransientTokenResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetTransientTokenResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetTransientTokenResponseBody.cs b/PlexAPI/Models/Requests/GetTransientTokenResponseBody.cs new file mode 100644 index 0000000..a1ef0a6 --- /dev/null +++ b/PlexAPI/Models/Requests/GetTransientTokenResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetTransientTokenResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetUpdateStatusErrors.cs b/PlexAPI/Models/Requests/GetUpdateStatusErrors.cs new file mode 100644 index 0000000..2f715b5 --- /dev/null +++ b/PlexAPI/Models/Requests/GetUpdateStatusErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class GetUpdateStatusErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetUpdateStatusResponse.cs b/PlexAPI/Models/Requests/GetUpdateStatusResponse.cs new file mode 100644 index 0000000..447db53 --- /dev/null +++ b/PlexAPI/Models/Requests/GetUpdateStatusResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class GetUpdateStatusResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public GetUpdateStatusResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/GetUpdateStatusResponseBody.cs b/PlexAPI/Models/Requests/GetUpdateStatusResponseBody.cs new file mode 100644 index 0000000..ee42cb0 --- /dev/null +++ b/PlexAPI/Models/Requests/GetUpdateStatusResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class GetUpdateStatusResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Guids.cs b/PlexAPI/Models/Requests/Guids.cs new file mode 100644 index 0000000..35caf48 --- /dev/null +++ b/PlexAPI/Models/Requests/Guids.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Guids + { + + [JsonProperty("id")] + public string? Id { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/IncludeDetails.cs b/PlexAPI/Models/Requests/IncludeDetails.cs new file mode 100644 index 0000000..30a1607 --- /dev/null +++ b/PlexAPI/Models/Requests/IncludeDetails.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// Whether or not to include details for a section (types, filters, and sorts).
+ /// + /// + /// Only exists for backwards compatibility, media providers other than the server libraries have it on always.
+ /// + ///
+ ///
+ public enum IncludeDetails + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Level.cs b/PlexAPI/Models/Requests/Level.cs new file mode 100644 index 0000000..5751619 --- /dev/null +++ b/PlexAPI/Models/Requests/Level.cs @@ -0,0 +1,34 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// An integer log level to write to the PMS log with.
+ /// + /// + /// 0: Error
+ /// 1: Warning
+ /// 2: Info
+ /// 3: Debug
+ /// 4: Verbose
+ /// + ///
+ ///
+ public enum Level + { + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogLineErrors.cs b/PlexAPI/Models/Requests/LogLineErrors.cs new file mode 100644 index 0000000..9b65304 --- /dev/null +++ b/PlexAPI/Models/Requests/LogLineErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class LogLineErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogLineRequest.cs b/PlexAPI/Models/Requests/LogLineRequest.cs new file mode 100644 index 0000000..d9fddc6 --- /dev/null +++ b/PlexAPI/Models/Requests/LogLineRequest.cs @@ -0,0 +1,45 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class LogLineRequest + { + + /// + /// An integer log level to write to the PMS log with.
+ /// + /// + /// 0: Error
+ /// 1: Warning
+ /// 2: Info
+ /// 3: Debug
+ /// 4: Verbose
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=level")] + public Level Level { get; set; } = default!; + + /// + /// The text of the message to write to the log. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=message")] + public string Message { get; set; } = default!; + + /// + /// a string indicating the source of the message. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=source")] + public string Source { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogLineResponse.cs b/PlexAPI/Models/Requests/LogLineResponse.cs new file mode 100644 index 0000000..9ef129f --- /dev/null +++ b/PlexAPI/Models/Requests/LogLineResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class LogLineResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public LogLineResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogLineResponseBody.cs b/PlexAPI/Models/Requests/LogLineResponseBody.cs new file mode 100644 index 0000000..128405e --- /dev/null +++ b/PlexAPI/Models/Requests/LogLineResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class LogLineResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogMultiLineErrors.cs b/PlexAPI/Models/Requests/LogMultiLineErrors.cs new file mode 100644 index 0000000..fbcbf7d --- /dev/null +++ b/PlexAPI/Models/Requests/LogMultiLineErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class LogMultiLineErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogMultiLineResponse.cs b/PlexAPI/Models/Requests/LogMultiLineResponse.cs new file mode 100644 index 0000000..48a91a1 --- /dev/null +++ b/PlexAPI/Models/Requests/LogMultiLineResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class LogMultiLineResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public LogMultiLineResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/LogMultiLineResponseBody.cs b/PlexAPI/Models/Requests/LogMultiLineResponseBody.cs new file mode 100644 index 0000000..aa8b557 --- /dev/null +++ b/PlexAPI/Models/Requests/LogMultiLineResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class LogMultiLineResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkPlayedErrors.cs b/PlexAPI/Models/Requests/MarkPlayedErrors.cs new file mode 100644 index 0000000..d0f7452 --- /dev/null +++ b/PlexAPI/Models/Requests/MarkPlayedErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class MarkPlayedErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkPlayedRequest.cs b/PlexAPI/Models/Requests/MarkPlayedRequest.cs new file mode 100644 index 0000000..c9996be --- /dev/null +++ b/PlexAPI/Models/Requests/MarkPlayedRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class MarkPlayedRequest + { + + /// + /// The media key to mark as played + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public double Key { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkPlayedResponse.cs b/PlexAPI/Models/Requests/MarkPlayedResponse.cs new file mode 100644 index 0000000..0f94c8a --- /dev/null +++ b/PlexAPI/Models/Requests/MarkPlayedResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class MarkPlayedResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public MarkPlayedResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkPlayedResponseBody.cs b/PlexAPI/Models/Requests/MarkPlayedResponseBody.cs new file mode 100644 index 0000000..1404291 --- /dev/null +++ b/PlexAPI/Models/Requests/MarkPlayedResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class MarkPlayedResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkUnplayedErrors.cs b/PlexAPI/Models/Requests/MarkUnplayedErrors.cs new file mode 100644 index 0000000..67aad12 --- /dev/null +++ b/PlexAPI/Models/Requests/MarkUnplayedErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class MarkUnplayedErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkUnplayedRequest.cs b/PlexAPI/Models/Requests/MarkUnplayedRequest.cs new file mode 100644 index 0000000..9f9e7ed --- /dev/null +++ b/PlexAPI/Models/Requests/MarkUnplayedRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class MarkUnplayedRequest + { + + /// + /// The media key to mark as Unplayed + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public double Key { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkUnplayedResponse.cs b/PlexAPI/Models/Requests/MarkUnplayedResponse.cs new file mode 100644 index 0000000..45c840c --- /dev/null +++ b/PlexAPI/Models/Requests/MarkUnplayedResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class MarkUnplayedResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public MarkUnplayedResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MarkUnplayedResponseBody.cs b/PlexAPI/Models/Requests/MarkUnplayedResponseBody.cs new file mode 100644 index 0000000..4eb7c39 --- /dev/null +++ b/PlexAPI/Models/Requests/MarkUnplayedResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class MarkUnplayedResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Media.cs b/PlexAPI/Models/Requests/Media.cs new file mode 100644 index 0000000..1d53786 --- /dev/null +++ b/PlexAPI/Models/Requests/Media.cs @@ -0,0 +1,67 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Media + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("bitrate")] + public double? Bitrate { get; set; } + + [JsonProperty("width")] + public double? Width { get; set; } + + [JsonProperty("height")] + public double? Height { get; set; } + + [JsonProperty("aspectRatio")] + public double? AspectRatio { get; set; } + + [JsonProperty("audioChannels")] + public double? AudioChannels { get; set; } + + [JsonProperty("audioCodec")] + public string? AudioCodec { get; set; } + + [JsonProperty("videoCodec")] + public string? VideoCodec { get; set; } + + [JsonProperty("videoResolution")] + public double? VideoResolution { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("videoFrameRate")] + public string? VideoFrameRate { get; set; } + + [JsonProperty("optimizedForStreaming")] + public double? OptimizedForStreaming { get; set; } + + [JsonProperty("has64bitOffsets")] + public bool? Has64bitOffsets { get; set; } + + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + + [JsonProperty("Part")] + public List? Part { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MediaContainer.cs b/PlexAPI/Models/Requests/MediaContainer.cs new file mode 100644 index 0000000..9536970 --- /dev/null +++ b/PlexAPI/Models/Requests/MediaContainer.cs @@ -0,0 +1,172 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + public class MediaContainer + { + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("allowCameraUpload")] + public bool? AllowCameraUpload { get; set; } + + [JsonProperty("allowChannelAccess")] + public bool? AllowChannelAccess { get; set; } + + [JsonProperty("allowMediaDeletion")] + public bool? AllowMediaDeletion { 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("hubSearch")] + public bool? HubSearch { get; set; } + + [JsonProperty("itemClusters")] + public bool? ItemClusters { get; set; } + + [JsonProperty("livetv")] + public double? Livetv { get; set; } + + [JsonProperty("machineIdentifier")] + public string? MachineIdentifier { get; set; } + + [JsonProperty("mediaProviders")] + public bool? MediaProviders { get; set; } + + [JsonProperty("multiuser")] + public bool? Multiuser { get; set; } + + [JsonProperty("musicAnalysis")] + public double? 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 double? OfflineTranscode { get; set; } + + [JsonProperty("ownerFeatures")] + public string? OwnerFeatures { get; set; } + + [JsonProperty("photoAutoTag")] + public bool? PhotoAutoTag { 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 double? StreamingBrainABRVersion { get; set; } + + [JsonProperty("streamingBrainVersion")] + public double? StreamingBrainVersion { get; set; } + + [JsonProperty("sync")] + public bool? Sync { get; set; } + + [JsonProperty("transcoderActiveVideoSessions")] + public double? TranscoderActiveVideoSessions { get; set; } + + [JsonProperty("transcoderAudio")] + public bool? TranscoderAudio { get; set; } + + [JsonProperty("transcoderLyrics")] + public bool? TranscoderLyrics { get; set; } + + [JsonProperty("transcoderPhoto")] + public bool? TranscoderPhoto { 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 double? 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("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Metadata.cs b/PlexAPI/Models/Requests/Metadata.cs new file mode 100644 index 0000000..4a12ef0 --- /dev/null +++ b/PlexAPI/Models/Requests/Metadata.cs @@ -0,0 +1,116 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + using System; + + public class Metadata + { + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("librarySectionID")] + public double? LibrarySectionID { get; set; } + + [JsonProperty("librarySectionTitle")] + public string? LibrarySectionTitle { get; set; } + + [JsonProperty("librarySectionUUID")] + public string? LibrarySectionUUID { get; set; } + + [JsonProperty("ratingKey")] + public double? RatingKey { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("guid")] + public string? Guid { get; set; } + + [JsonProperty("studio")] + public string? Studio { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("contentRating")] + public string? ContentRating { get; set; } + + [JsonProperty("summary")] + public string? Summary { get; set; } + + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + [JsonProperty("year")] + public double? Year { get; set; } + + [JsonProperty("tagline")] + public string? Tagline { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("originallyAvailableAt")] + public DateTime? OriginallyAvailableAt { get; set; } + + [JsonProperty("addedAt")] + public double? AddedAt { get; set; } + + [JsonProperty("updatedAt")] + public double? UpdatedAt { get; set; } + + [JsonProperty("audienceRatingImage")] + public string? AudienceRatingImage { get; set; } + + [JsonProperty("chapterSource")] + public string? ChapterSource { get; set; } + + [JsonProperty("primaryExtraKey")] + public string? PrimaryExtraKey { get; set; } + + [JsonProperty("ratingImage")] + public string? RatingImage { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MinSize.cs b/PlexAPI/Models/Requests/MinSize.cs new file mode 100644 index 0000000..66da56f --- /dev/null +++ b/PlexAPI/Models/Requests/MinSize.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. + /// + public enum MinSize + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/MyPlex.cs b/PlexAPI/Models/Requests/MyPlex.cs new file mode 100644 index 0000000..e857e9b --- /dev/null +++ b/PlexAPI/Models/Requests/MyPlex.cs @@ -0,0 +1,54 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class MyPlex + { + + [JsonProperty("authToken")] + public string? AuthToken { get; set; } + + [JsonProperty("username")] + public string? Username { get; set; } + + [JsonProperty("mappingState")] + public string? MappingState { get; set; } + + [JsonProperty("mappingError")] + public string? MappingError { get; set; } + + [JsonProperty("signInState")] + public string? SignInState { get; set; } + + [JsonProperty("publicAddress")] + public string? PublicAddress { get; set; } + + [JsonProperty("publicPort")] + public double? PublicPort { get; set; } + + [JsonProperty("privateAddress")] + public string? PrivateAddress { get; set; } + + [JsonProperty("privatePort")] + public double? PrivatePort { get; set; } + + [JsonProperty("subscriptionFeatures")] + public string? SubscriptionFeatures { get; set; } + + [JsonProperty("subscriptionActive")] + public bool? SubscriptionActive { get; set; } + + [JsonProperty("subscriptionState")] + public string? SubscriptionState { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/OnlyTransient.cs b/PlexAPI/Models/Requests/OnlyTransient.cs new file mode 100644 index 0000000..3210a74 --- /dev/null +++ b/PlexAPI/Models/Requests/OnlyTransient.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + /// + public enum OnlyTransient + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Part.cs b/PlexAPI/Models/Requests/Part.cs new file mode 100644 index 0000000..63742f4 --- /dev/null +++ b/PlexAPI/Models/Requests/Part.cs @@ -0,0 +1,48 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Part + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("file")] + public string? File { get; set; } + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("has64bitOffsets")] + public bool? Has64bitOffsets { get; set; } + + [JsonProperty("hasThumbnail")] + public double? HasThumbnail { get; set; } + + [JsonProperty("optimizedForStreaming")] + public bool? OptimizedForStreaming { get; set; } + + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PathParamTaskName.cs b/PlexAPI/Models/Requests/PathParamTaskName.cs new file mode 100644 index 0000000..0919394 --- /dev/null +++ b/PlexAPI/Models/Requests/PathParamTaskName.cs @@ -0,0 +1,83 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// The name of the task to be started. + /// + public enum PathParamTaskName + { + [JsonProperty("BackupDatabase")] + BackupDatabase, + [JsonProperty("BuildGracenoteCollections")] + BuildGracenoteCollections, + [JsonProperty("CheckForUpdates")] + CheckForUpdates, + [JsonProperty("CleanOldBundles")] + CleanOldBundles, + [JsonProperty("CleanOldCacheFiles")] + CleanOldCacheFiles, + [JsonProperty("DeepMediaAnalysis")] + DeepMediaAnalysis, + [JsonProperty("GenerateAutoTags")] + GenerateAutoTags, + [JsonProperty("GenerateChapterThumbs")] + GenerateChapterThumbs, + [JsonProperty("GenerateMediaIndexFiles")] + GenerateMediaIndexFiles, + [JsonProperty("OptimizeDatabase")] + OptimizeDatabase, + [JsonProperty("RefreshLibraries")] + RefreshLibraries, + [JsonProperty("RefreshLocalMedia")] + RefreshLocalMedia, + [JsonProperty("RefreshPeriodicMetadata")] + RefreshPeriodicMetadata, + [JsonProperty("UpgradeMediaAnalysis")] + UpgradeMediaAnalysis, + } + + public static class PathParamTaskNameExtension + { + public static string Value(this PathParamTaskName value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PathParamTaskName ToEnum(this string value) + { + foreach(var field in typeof(PathParamTaskName).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 PathParamTaskName) + { + return (PathParamTaskName)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PathParamTaskName"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformSearchErrors.cs b/PlexAPI/Models/Requests/PerformSearchErrors.cs new file mode 100644 index 0000000..b2b311f --- /dev/null +++ b/PlexAPI/Models/Requests/PerformSearchErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class PerformSearchErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformSearchRequest.cs b/PlexAPI/Models/Requests/PerformSearchRequest.cs new file mode 100644 index 0000000..c935517 --- /dev/null +++ b/PlexAPI/Models/Requests/PerformSearchRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class PerformSearchRequest + { + + /// + /// The query term + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")] + public string Query { get; set; } = default!; + + /// + /// This gives context to the search, and can result in re-ordering of search result hubs + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sectionId")] + public double? SectionId { get; set; } + + /// + /// The number of items to return per hub + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public double? Limit { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformSearchResponse.cs b/PlexAPI/Models/Requests/PerformSearchResponse.cs new file mode 100644 index 0000000..0d76805 --- /dev/null +++ b/PlexAPI/Models/Requests/PerformSearchResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class PerformSearchResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public PerformSearchResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformSearchResponseBody.cs b/PlexAPI/Models/Requests/PerformSearchResponseBody.cs new file mode 100644 index 0000000..e11e47d --- /dev/null +++ b/PlexAPI/Models/Requests/PerformSearchResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class PerformSearchResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformVoiceSearchErrors.cs b/PlexAPI/Models/Requests/PerformVoiceSearchErrors.cs new file mode 100644 index 0000000..cd8da72 --- /dev/null +++ b/PlexAPI/Models/Requests/PerformVoiceSearchErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class PerformVoiceSearchErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformVoiceSearchRequest.cs b/PlexAPI/Models/Requests/PerformVoiceSearchRequest.cs new file mode 100644 index 0000000..42c3db3 --- /dev/null +++ b/PlexAPI/Models/Requests/PerformVoiceSearchRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class PerformVoiceSearchRequest + { + + /// + /// The query term + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")] + public string Query { get; set; } = default!; + + /// + /// This gives context to the search, and can result in re-ordering of search result hubs + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sectionId")] + public double? SectionId { get; set; } + + /// + /// The number of items to return per hub + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public double? Limit { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformVoiceSearchResponse.cs b/PlexAPI/Models/Requests/PerformVoiceSearchResponse.cs new file mode 100644 index 0000000..cfd2bdd --- /dev/null +++ b/PlexAPI/Models/Requests/PerformVoiceSearchResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class PerformVoiceSearchResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public PerformVoiceSearchResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PerformVoiceSearchResponseBody.cs b/PlexAPI/Models/Requests/PerformVoiceSearchResponseBody.cs new file mode 100644 index 0000000..594d55c --- /dev/null +++ b/PlexAPI/Models/Requests/PerformVoiceSearchResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class PerformVoiceSearchResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/PlaylistType.cs b/PlexAPI/Models/Requests/PlaylistType.cs new file mode 100644 index 0000000..08dbced --- /dev/null +++ b/PlexAPI/Models/Requests/PlaylistType.cs @@ -0,0 +1,61 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// limit to a type of playlist. + /// + public enum PlaylistType + { + [JsonProperty("audio")] + Audio, + [JsonProperty("video")] + Video, + [JsonProperty("photo")] + Photo, + } + + public static class PlaylistTypeExtension + { + public static string Value(this PlaylistType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PlaylistType ToEnum(this string value) + { + foreach(var field in typeof(PlaylistType).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 PlaylistType) + { + return (PlaylistType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PlaylistType"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Provider.cs b/PlexAPI/Models/Requests/Provider.cs new file mode 100644 index 0000000..90c8321 --- /dev/null +++ b/PlexAPI/Models/Requests/Provider.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Provider + { + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/QueryParamOnlyTransient.cs b/PlexAPI/Models/Requests/QueryParamOnlyTransient.cs new file mode 100644 index 0000000..3928832 --- /dev/null +++ b/PlexAPI/Models/Requests/QueryParamOnlyTransient.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + /// + public enum QueryParamOnlyTransient + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/QueryParamSmart.cs b/PlexAPI/Models/Requests/QueryParamSmart.cs new file mode 100644 index 0000000..93ef735 --- /dev/null +++ b/PlexAPI/Models/Requests/QueryParamSmart.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// type of playlists to return (default is all). + /// + public enum QueryParamSmart + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/QueryParamType.cs b/PlexAPI/Models/Requests/QueryParamType.cs new file mode 100644 index 0000000..3cedc3d --- /dev/null +++ b/PlexAPI/Models/Requests/QueryParamType.cs @@ -0,0 +1,57 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// `delegation` - This is the only supported `type` parameter. + /// + public enum QueryParamType + { + [JsonProperty("delegation")] + Delegation, + } + + 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"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/RefreshLibraryErrors.cs b/PlexAPI/Models/Requests/RefreshLibraryErrors.cs new file mode 100644 index 0000000..a8e8c36 --- /dev/null +++ b/PlexAPI/Models/Requests/RefreshLibraryErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class RefreshLibraryErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/RefreshLibraryRequest.cs b/PlexAPI/Models/Requests/RefreshLibraryRequest.cs new file mode 100644 index 0000000..e80bd40 --- /dev/null +++ b/PlexAPI/Models/Requests/RefreshLibraryRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class RefreshLibraryRequest + { + + /// + /// the Id of the library to refresh + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public double SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/RefreshLibraryResponse.cs b/PlexAPI/Models/Requests/RefreshLibraryResponse.cs new file mode 100644 index 0000000..c735df0 --- /dev/null +++ b/PlexAPI/Models/Requests/RefreshLibraryResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class RefreshLibraryResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public RefreshLibraryResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/RefreshLibraryResponseBody.cs b/PlexAPI/Models/Requests/RefreshLibraryResponseBody.cs new file mode 100644 index 0000000..6fbda6d --- /dev/null +++ b/PlexAPI/Models/Requests/RefreshLibraryResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class RefreshLibraryResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/ResponseBody.cs b/PlexAPI/Models/Requests/ResponseBody.cs new file mode 100644 index 0000000..065e625 --- /dev/null +++ b/PlexAPI/Models/Requests/ResponseBody.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class ResponseBody + { + + [JsonProperty("MediaContainer")] + public GetAvailableClientsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Role.cs b/PlexAPI/Models/Requests/Role.cs new file mode 100644 index 0000000..4d70bfb --- /dev/null +++ b/PlexAPI/Models/Requests/Role.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Role + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Scope.cs b/PlexAPI/Models/Requests/Scope.cs new file mode 100644 index 0000000..74e805a --- /dev/null +++ b/PlexAPI/Models/Requests/Scope.cs @@ -0,0 +1,57 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// `all` - This is the only supported `scope` parameter. + /// + public enum Scope + { + [JsonProperty("all")] + All, + } + + public static class ScopeExtension + { + public static string Value(this Scope value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Scope ToEnum(this string value) + { + foreach(var field in typeof(Scope).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 Scope) + { + return (Scope)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Scope"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Server.cs b/PlexAPI/Models/Requests/Server.cs new file mode 100644 index 0000000..9ca1768 --- /dev/null +++ b/PlexAPI/Models/Requests/Server.cs @@ -0,0 +1,51 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Server + { + + [JsonProperty("name")] + public string? Name { get; set; } + + [JsonProperty("host")] + public string? Host { get; set; } + + [JsonProperty("address")] + public string? Address { get; set; } + + [JsonProperty("port")] + public double? Port { get; set; } + + [JsonProperty("machineIdentifier")] + public string? MachineIdentifier { get; set; } + + [JsonProperty("version")] + public string? Version { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + [JsonProperty("product")] + public string? Product { get; set; } + + [JsonProperty("deviceClass")] + public string? DeviceClass { get; set; } + + [JsonProperty("protocolVersion")] + public double? ProtocolVersion { get; set; } + + [JsonProperty("protocolCapabilities")] + public string? ProtocolCapabilities { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Skip.cs b/PlexAPI/Models/Requests/Skip.cs new file mode 100644 index 0000000..aa1c4be --- /dev/null +++ b/PlexAPI/Models/Requests/Skip.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. + /// + public enum Skip + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Smart.cs b/PlexAPI/Models/Requests/Smart.cs new file mode 100644 index 0000000..a3b165c --- /dev/null +++ b/PlexAPI/Models/Requests/Smart.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// whether the playlist is smart or not + /// + public enum Smart + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartAllTasksErrors.cs b/PlexAPI/Models/Requests/StartAllTasksErrors.cs new file mode 100644 index 0000000..8a2b825 --- /dev/null +++ b/PlexAPI/Models/Requests/StartAllTasksErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class StartAllTasksErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartAllTasksResponse.cs b/PlexAPI/Models/Requests/StartAllTasksResponse.cs new file mode 100644 index 0000000..c42f856 --- /dev/null +++ b/PlexAPI/Models/Requests/StartAllTasksResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class StartAllTasksResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public StartAllTasksResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartAllTasksResponseBody.cs b/PlexAPI/Models/Requests/StartAllTasksResponseBody.cs new file mode 100644 index 0000000..6e82015 --- /dev/null +++ b/PlexAPI/Models/Requests/StartAllTasksResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class StartAllTasksResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartTaskErrors.cs b/PlexAPI/Models/Requests/StartTaskErrors.cs new file mode 100644 index 0000000..18bb201 --- /dev/null +++ b/PlexAPI/Models/Requests/StartTaskErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class StartTaskErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartTaskRequest.cs b/PlexAPI/Models/Requests/StartTaskRequest.cs new file mode 100644 index 0000000..e10e862 --- /dev/null +++ b/PlexAPI/Models/Requests/StartTaskRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class StartTaskRequest + { + + /// + /// the name of the task to be started. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=taskName")] + public TaskName TaskName { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartTaskResponse.cs b/PlexAPI/Models/Requests/StartTaskResponse.cs new file mode 100644 index 0000000..7912965 --- /dev/null +++ b/PlexAPI/Models/Requests/StartTaskResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class StartTaskResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public StartTaskResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartTaskResponseBody.cs b/PlexAPI/Models/Requests/StartTaskResponseBody.cs new file mode 100644 index 0000000..29f8f32 --- /dev/null +++ b/PlexAPI/Models/Requests/StartTaskResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class StartTaskResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartUniversalTranscodeErrors.cs b/PlexAPI/Models/Requests/StartUniversalTranscodeErrors.cs new file mode 100644 index 0000000..6d9d113 --- /dev/null +++ b/PlexAPI/Models/Requests/StartUniversalTranscodeErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class StartUniversalTranscodeErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartUniversalTranscodeRequest.cs b/PlexAPI/Models/Requests/StartUniversalTranscodeRequest.cs new file mode 100644 index 0000000..2ff1e3a --- /dev/null +++ b/PlexAPI/Models/Requests/StartUniversalTranscodeRequest.cs @@ -0,0 +1,114 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class StartUniversalTranscodeRequest + { + + /// + /// Whether the media item has MDE + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] + public double HasMDE { get; set; } = default!; + + /// + /// The path to the media item to transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string Path { get; set; } = default!; + + /// + /// The index of the media item to transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaIndex")] + public double MediaIndex { get; set; } = default!; + + /// + /// The index of the part to transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=partIndex")] + public double PartIndex { get; set; } = default!; + + /// + /// The protocol to use for the transcode session + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=protocol")] + public string Protocol { get; set; } = default!; + + /// + /// Whether to use fast seek or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=fastSeek")] + public double? FastSeek { get; set; } + + /// + /// Whether to use direct play or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")] + public double? DirectPlay { get; set; } + + /// + /// Whether to use direct stream or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")] + public double? DirectStream { get; set; } + + /// + /// The size of the subtitles + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitleSize")] + public double? SubtitleSize { get; set; } + + /// + /// The subtitles + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtites")] + public string? Subtites { get; set; } + + /// + /// The audio boost + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioBoost")] + public double? AudioBoost { get; set; } + + /// + /// The location of the transcode session + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=location")] + public string? Location { get; set; } + + /// + /// The size of the media buffer + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaBufferSize")] + public double? MediaBufferSize { get; set; } + + /// + /// The session ID + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=session")] + public string? Session { get; set; } + + /// + /// Whether to add a debug overlay or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=addDebugOverlay")] + public double? AddDebugOverlay { get; set; } + + /// + /// Whether to auto adjust quality or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")] + public double? AutoAdjustQuality { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartUniversalTranscodeResponse.cs b/PlexAPI/Models/Requests/StartUniversalTranscodeResponse.cs new file mode 100644 index 0000000..d1e015a --- /dev/null +++ b/PlexAPI/Models/Requests/StartUniversalTranscodeResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class StartUniversalTranscodeResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public StartUniversalTranscodeResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StartUniversalTranscodeResponseBody.cs b/PlexAPI/Models/Requests/StartUniversalTranscodeResponseBody.cs new file mode 100644 index 0000000..0372b9e --- /dev/null +++ b/PlexAPI/Models/Requests/StartUniversalTranscodeResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class StartUniversalTranscodeResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/State.cs b/PlexAPI/Models/Requests/State.cs new file mode 100644 index 0000000..d34f7a8 --- /dev/null +++ b/PlexAPI/Models/Requests/State.cs @@ -0,0 +1,61 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// The state of the media item + /// + public enum State + { + [JsonProperty("playing")] + Playing, + [JsonProperty("paused")] + Paused, + [JsonProperty("stopped")] + Stopped, + } + + public static class StateExtension + { + public static string Value(this State value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static State ToEnum(this string value) + { + foreach(var field in typeof(State).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 State) + { + return (State)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum State"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopAllTasksErrors.cs b/PlexAPI/Models/Requests/StopAllTasksErrors.cs new file mode 100644 index 0000000..6a6c946 --- /dev/null +++ b/PlexAPI/Models/Requests/StopAllTasksErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class StopAllTasksErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopAllTasksResponse.cs b/PlexAPI/Models/Requests/StopAllTasksResponse.cs new file mode 100644 index 0000000..901e6a7 --- /dev/null +++ b/PlexAPI/Models/Requests/StopAllTasksResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class StopAllTasksResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public StopAllTasksResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopAllTasksResponseBody.cs b/PlexAPI/Models/Requests/StopAllTasksResponseBody.cs new file mode 100644 index 0000000..3e8f795 --- /dev/null +++ b/PlexAPI/Models/Requests/StopAllTasksResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class StopAllTasksResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTaskErrors.cs b/PlexAPI/Models/Requests/StopTaskErrors.cs new file mode 100644 index 0000000..a371c4a --- /dev/null +++ b/PlexAPI/Models/Requests/StopTaskErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class StopTaskErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTaskRequest.cs b/PlexAPI/Models/Requests/StopTaskRequest.cs new file mode 100644 index 0000000..6d5cfae --- /dev/null +++ b/PlexAPI/Models/Requests/StopTaskRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class StopTaskRequest + { + + /// + /// The name of the task to be started. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=taskName")] + public PathParamTaskName TaskName { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTaskResponse.cs b/PlexAPI/Models/Requests/StopTaskResponse.cs new file mode 100644 index 0000000..7b8bb7e --- /dev/null +++ b/PlexAPI/Models/Requests/StopTaskResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class StopTaskResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public StopTaskResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTaskResponseBody.cs b/PlexAPI/Models/Requests/StopTaskResponseBody.cs new file mode 100644 index 0000000..851ca70 --- /dev/null +++ b/PlexAPI/Models/Requests/StopTaskResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class StopTaskResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTranscodeSessionErrors.cs b/PlexAPI/Models/Requests/StopTranscodeSessionErrors.cs new file mode 100644 index 0000000..508508f --- /dev/null +++ b/PlexAPI/Models/Requests/StopTranscodeSessionErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class StopTranscodeSessionErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTranscodeSessionRequest.cs b/PlexAPI/Models/Requests/StopTranscodeSessionRequest.cs new file mode 100644 index 0000000..5b53e5b --- /dev/null +++ b/PlexAPI/Models/Requests/StopTranscodeSessionRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class StopTranscodeSessionRequest + { + + /// + /// the Key of the transcode session to stop + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sessionKey")] + public string SessionKey { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTranscodeSessionResponse.cs b/PlexAPI/Models/Requests/StopTranscodeSessionResponse.cs new file mode 100644 index 0000000..33c1ac8 --- /dev/null +++ b/PlexAPI/Models/Requests/StopTranscodeSessionResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class StopTranscodeSessionResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public StopTranscodeSessionResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/StopTranscodeSessionResponseBody.cs b/PlexAPI/Models/Requests/StopTranscodeSessionResponseBody.cs new file mode 100644 index 0000000..224c613 --- /dev/null +++ b/PlexAPI/Models/Requests/StopTranscodeSessionResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class StopTranscodeSessionResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Stream.cs b/PlexAPI/Models/Requests/Stream.cs new file mode 100644 index 0000000..93c655a --- /dev/null +++ b/PlexAPI/Models/Requests/Stream.cs @@ -0,0 +1,87 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Stream + { + + [JsonProperty("id")] + public double? Id { get; set; } + + [JsonProperty("streamType")] + public double? StreamType { get; set; } + + [JsonProperty("default")] + public bool? Default { get; set; } + + [JsonProperty("codec")] + public string? Codec { get; set; } + + [JsonProperty("index")] + public double? Index { get; set; } + + [JsonProperty("bitrate")] + public double? Bitrate { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("languageTag")] + public string? LanguageTag { get; set; } + + [JsonProperty("languageCode")] + public string? LanguageCode { get; set; } + + [JsonProperty("bitDepth")] + public double? BitDepth { get; set; } + + [JsonProperty("chromaLocation")] + public string? ChromaLocation { get; set; } + + [JsonProperty("chromaSubsampling")] + public string? ChromaSubsampling { get; set; } + + [JsonProperty("codedHeight")] + public double? CodedHeight { get; set; } + + [JsonProperty("codedWidth")] + public double? CodedWidth { get; set; } + + [JsonProperty("colorRange")] + public string? ColorRange { get; set; } + + [JsonProperty("frameRate")] + public double? FrameRate { get; set; } + + [JsonProperty("height")] + public double? Height { get; set; } + + [JsonProperty("level")] + public double? Level { get; set; } + + [JsonProperty("profile")] + public string? Profile { get; set; } + + [JsonProperty("refFrames")] + public double? RefFrames { get; set; } + + [JsonProperty("width")] + public double? Width { get; set; } + + [JsonProperty("displayTitle")] + public string? DisplayTitle { get; set; } + + [JsonProperty("extendedDisplayTitle")] + public string? ExtendedDisplayTitle { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/TaskName.cs b/PlexAPI/Models/Requests/TaskName.cs new file mode 100644 index 0000000..5028a29 --- /dev/null +++ b/PlexAPI/Models/Requests/TaskName.cs @@ -0,0 +1,83 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// the name of the task to be started. + /// + public enum TaskName + { + [JsonProperty("BackupDatabase")] + BackupDatabase, + [JsonProperty("BuildGracenoteCollections")] + BuildGracenoteCollections, + [JsonProperty("CheckForUpdates")] + CheckForUpdates, + [JsonProperty("CleanOldBundles")] + CleanOldBundles, + [JsonProperty("CleanOldCacheFiles")] + CleanOldCacheFiles, + [JsonProperty("DeepMediaAnalysis")] + DeepMediaAnalysis, + [JsonProperty("GenerateAutoTags")] + GenerateAutoTags, + [JsonProperty("GenerateChapterThumbs")] + GenerateChapterThumbs, + [JsonProperty("GenerateMediaIndexFiles")] + GenerateMediaIndexFiles, + [JsonProperty("OptimizeDatabase")] + OptimizeDatabase, + [JsonProperty("RefreshLibraries")] + RefreshLibraries, + [JsonProperty("RefreshLocalMedia")] + RefreshLocalMedia, + [JsonProperty("RefreshPeriodicMetadata")] + RefreshPeriodicMetadata, + [JsonProperty("UpgradeMediaAnalysis")] + UpgradeMediaAnalysis, + } + + public static class TaskNameExtension + { + public static string Value(this TaskName value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static TaskName ToEnum(this string value) + { + foreach(var field in typeof(TaskName).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 TaskName) + { + return (TaskName)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum TaskName"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Tonight.cs b/PlexAPI/Models/Requests/Tonight.cs new file mode 100644 index 0000000..e6db473 --- /dev/null +++ b/PlexAPI/Models/Requests/Tonight.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install + /// + public enum Tonight + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/TranscodeSession.cs b/PlexAPI/Models/Requests/TranscodeSession.cs new file mode 100644 index 0000000..184104a --- /dev/null +++ b/PlexAPI/Models/Requests/TranscodeSession.cs @@ -0,0 +1,84 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class TranscodeSession + { + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("throttled")] + public bool? Throttled { get; set; } + + [JsonProperty("complete")] + public bool? Complete { get; set; } + + [JsonProperty("progress")] + public double? Progress { get; set; } + + [JsonProperty("size")] + public double? Size { get; set; } + + [JsonProperty("speed")] + public double? Speed { get; set; } + + [JsonProperty("error")] + public bool? Error { get; set; } + + [JsonProperty("duration")] + public double? Duration { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + [JsonProperty("sourceVideoCodec")] + public string? SourceVideoCodec { get; set; } + + [JsonProperty("sourceAudioCodec")] + public string? SourceAudioCodec { get; set; } + + [JsonProperty("videoDecision")] + public string? VideoDecision { get; set; } + + [JsonProperty("audioDecision")] + public string? AudioDecision { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + [JsonProperty("container")] + public string? Container { get; set; } + + [JsonProperty("videoCodec")] + public string? VideoCodec { get; set; } + + [JsonProperty("audioCodec")] + public string? AudioCodec { get; set; } + + [JsonProperty("audioChannels")] + public double? AudioChannels { get; set; } + + [JsonProperty("transcodeHwRequested")] + public bool? TranscodeHwRequested { get; set; } + + [JsonProperty("timeStamp")] + public double? TimeStamp { get; set; } + + [JsonProperty("maxOffsetAvailable")] + public double? MaxOffsetAvailable { get; set; } + + [JsonProperty("minOffsetAvailable")] + public double? MinOffsetAvailable { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Type.cs b/PlexAPI/Models/Requests/Type.cs new file mode 100644 index 0000000..0cf667e --- /dev/null +++ b/PlexAPI/Models/Requests/Type.cs @@ -0,0 +1,61 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System; + + /// + /// type of playlist to create + /// + public enum Type + { + [JsonProperty("audio")] + Audio, + [JsonProperty("video")] + Video, + [JsonProperty("photo")] + Photo, + } + + public static class TypeExtension + { + public static string Value(this Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Type ToEnum(this string value) + { + foreach(var field in typeof(Type).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 Type) + { + return (Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Type"); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlayProgressErrors.cs b/PlexAPI/Models/Requests/UpdatePlayProgressErrors.cs new file mode 100644 index 0000000..68b2e31 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlayProgressErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class UpdatePlayProgressErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs b/PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs new file mode 100644 index 0000000..b6cdf00 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class UpdatePlayProgressRequest + { + + /// + /// the media key + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public string Key { get; set; } = default!; + + /// + /// The time, in milliseconds, used to set the media playback progress. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=time")] + public double Time { get; set; } = default!; + + /// + /// The playback state of the media item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=state")] + public string State { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs b/PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs new file mode 100644 index 0000000..54661dd --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class UpdatePlayProgressResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public UpdatePlayProgressResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlayProgressResponseBody.cs b/PlexAPI/Models/Requests/UpdatePlayProgressResponseBody.cs new file mode 100644 index 0000000..65316f1 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlayProgressResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class UpdatePlayProgressResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlaylistErrors.cs b/PlexAPI/Models/Requests/UpdatePlaylistErrors.cs new file mode 100644 index 0000000..ffcd017 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlaylistErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class UpdatePlaylistErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlaylistRequest.cs b/PlexAPI/Models/Requests/UpdatePlaylistRequest.cs new file mode 100644 index 0000000..7ec6062 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlaylistRequest.cs @@ -0,0 +1,24 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class UpdatePlaylistRequest + { + + /// + /// the ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] + public double PlaylistID { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlaylistResponse.cs b/PlexAPI/Models/Requests/UpdatePlaylistResponse.cs new file mode 100644 index 0000000..5138039 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlaylistResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class UpdatePlaylistResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public UpdatePlaylistResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UpdatePlaylistResponseBody.cs b/PlexAPI/Models/Requests/UpdatePlaylistResponseBody.cs new file mode 100644 index 0000000..b70d524 --- /dev/null +++ b/PlexAPI/Models/Requests/UpdatePlaylistResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class UpdatePlaylistResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UploadPlaylistErrors.cs b/PlexAPI/Models/Requests/UploadPlaylistErrors.cs new file mode 100644 index 0000000..c50c685 --- /dev/null +++ b/PlexAPI/Models/Requests/UploadPlaylistErrors.cs @@ -0,0 +1,27 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class UploadPlaylistErrors + { + + [JsonProperty("code")] + public double? Code { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public double? Status { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UploadPlaylistRequest.cs b/PlexAPI/Models/Requests/UploadPlaylistRequest.cs new file mode 100644 index 0000000..c1a3a30 --- /dev/null +++ b/PlexAPI/Models/Requests/UploadPlaylistRequest.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using PlexAPI.Utils; + + public class UploadPlaylistRequest + { + + /// + /// absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
+ /// + /// + /// If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
+ /// Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
+ /// The GUID of each playlist is based on the filename.
+ /// If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
+ /// The GUID of each playlist is based on the filename.
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string Path { get; set; } = default!; + + /// + /// force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
+ /// + /// + /// The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public Force Force { get; set; } = default!; + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UploadPlaylistResponse.cs b/PlexAPI/Models/Requests/UploadPlaylistResponse.cs new file mode 100644 index 0000000..d8bcfe6 --- /dev/null +++ b/PlexAPI/Models/Requests/UploadPlaylistResponse.cs @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using System.Net.Http; + using System; + + public class UploadPlaylistResponse + { + + /// + /// HTTP response content type for this operation + /// + public string? ContentType { get; set; } = default!; + + /// + /// HTTP response status code for this operation + /// + public int StatusCode { get; set; } = default!; + + /// + /// Raw HTTP response; suitable for custom response parsing + /// + public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public UploadPlaylistResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/UploadPlaylistResponseBody.cs b/PlexAPI/Models/Requests/UploadPlaylistResponseBody.cs new file mode 100644 index 0000000..3afd9b1 --- /dev/null +++ b/PlexAPI/Models/Requests/UploadPlaylistResponseBody.cs @@ -0,0 +1,25 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + /// + public class UploadPlaylistResponseBody + { + + [JsonProperty("errors")] + public List? Errors { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Upscale.cs b/PlexAPI/Models/Requests/Upscale.cs new file mode 100644 index 0000000..d160666 --- /dev/null +++ b/PlexAPI/Models/Requests/Upscale.cs @@ -0,0 +1,22 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + + /// + /// allow images to be resized beyond native dimensions. + /// + public enum Upscale + { + Zero = 0, + One = 1, + } +} \ No newline at end of file diff --git a/PlexAPI/Models/Requests/Writer.cs b/PlexAPI/Models/Requests/Writer.cs new file mode 100644 index 0000000..4785747 --- /dev/null +++ b/PlexAPI/Models/Requests/Writer.cs @@ -0,0 +1,21 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Models.Requests +{ + using Newtonsoft.Json; + + public class Writer + { + + [JsonProperty("tag")] + public string? Tag { get; set; } + } +} \ No newline at end of file diff --git a/PlexAPI/Playlists.cs b/PlexAPI/Playlists.cs new file mode 100644 index 0000000..d49c1fe --- /dev/null +++ b/PlexAPI/Playlists.cs @@ -0,0 +1,559 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017").
+ /// + /// + /// They can be organized in (optionally nesting) folders.
+ /// Retrieving a playlist, or its items, will trigger a refresh of its metadata.
+ /// This may cause the duration and number of items to change.
+ /// + ///
+ ///
+ public interface IPlaylists + { + + /// + /// Create a Playlist + /// + /// + /// Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass:
+ /// - `uri` - The content URI for what we're playing (e.g. `library://...`).
+ /// - `playQueueID` - To create a playlist from an existing play queue.
+ /// + ///
+ ///
+ Task CreatePlaylistAsync(CreatePlaylistRequest? request = null); + + /// + /// Get All Playlists + /// + /// + /// Get All Playlists given the specified filters. + /// + /// + Task GetPlaylistsAsync(PlaylistType? playlistType = null, QueryParamSmart? smart = null); + + /// + /// Retrieve Playlist + /// + /// + /// Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item:
+ /// Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing.
+ /// + ///
+ ///
+ Task GetPlaylistAsync(double playlistID); + + /// + /// Deletes a Playlist + /// + /// + /// This endpoint will delete a playlist
+ /// + ///
+ ///
+ Task DeletePlaylistAsync(double playlistID); + + /// + /// Update a Playlist + /// + /// + /// From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}`
+ /// + ///
+ ///
+ Task UpdatePlaylistAsync(double playlistID); + + /// + /// Retrieve Playlist Contents + /// + /// + /// Gets the contents of a playlist. Should be paged by clients via standard mechanisms.
+ /// By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter.
+ /// For example, you could use this to display a list of recently added albums vis a smart playlist.
+ /// Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items.
+ /// + ///
+ ///
+ Task GetPlaylistContentsAsync(double playlistID, double type); + + /// + /// Delete Playlist Contents + /// + /// + /// Clears a playlist, only works with dumb playlists. Returns the playlist.
+ /// + ///
+ ///
+ Task ClearPlaylistContentsAsync(double playlistID); + + /// + /// Adding to a Playlist + /// + /// + /// Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist.
+ /// With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist.
+ /// + ///
+ ///
+ Task AddPlaylistContentsAsync(double playlistID, string uri, double playQueueID); + + /// + /// Upload Playlist + /// + /// + /// Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file.
+ /// + ///
+ ///
+ Task UploadPlaylistAsync(string path, Force force); + } + + /// + /// Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017").
+ /// + /// + /// They can be organized in (optionally nesting) folders.
+ /// Retrieving a playlist, or its items, will trigger a refresh of its metadata.
+ /// This may cause the duration and number of items to change.
+ /// + ///
+ ///
+ public class Playlists: IPlaylists + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Playlists(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task CreatePlaylistAsync(CreatePlaylistRequest? request = null) + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new CreatePlaylistResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetPlaylistsAsync(PlaylistType? playlistType = null, QueryParamSmart? smart = null) + { + var request = new GetPlaylistsRequest() + { + PlaylistType = playlistType, + Smart = smart, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/all", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetPlaylistsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetPlaylistAsync(double playlistID) + { + var request = new GetPlaylistRequest() + { + PlaylistID = playlistID, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetPlaylistResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task DeletePlaylistAsync(double playlistID) + { + var request = new DeletePlaylistRequest() + { + PlaylistID = playlistID, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new DeletePlaylistResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task UpdatePlaylistAsync(double playlistID) + { + var request = new UpdatePlaylistRequest() + { + PlaylistID = playlistID, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new UpdatePlaylistResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetPlaylistContentsAsync(double playlistID, double type) + { + var request = new GetPlaylistContentsRequest() + { + PlaylistID = playlistID, + Type = type, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetPlaylistContentsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task ClearPlaylistContentsAsync(double playlistID) + { + var request = new ClearPlaylistContentsRequest() + { + PlaylistID = playlistID, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new ClearPlaylistContentsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task AddPlaylistContentsAsync(double playlistID, string uri, double playQueueID) + { + var request = new AddPlaylistContentsRequest() + { + PlaylistID = playlistID, + Uri = uri, + PlayQueueID = playQueueID, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new AddPlaylistContentsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task UploadPlaylistAsync(string path, Force force) + { + var request = new UploadPlaylistRequest() + { + Path = path, + Force = force, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/upload", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new UploadPlaylistResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/PlexAPI.csproj b/PlexAPI/PlexAPI.csproj new file mode 100644 index 0000000..d386773 --- /dev/null +++ b/PlexAPI/PlexAPI.csproj @@ -0,0 +1,22 @@ + + + true + Plex-API + 0.1.0 + LukeHagar + net5.0 + enable + README.md + true + 1591 + https://github.com/LukeHagar/plexcsharp + + + + + + + + + + diff --git a/PlexAPI/PlexAPISDK.cs b/PlexAPI/PlexAPISDK.cs new file mode 100644 index 0000000..e680b7b --- /dev/null +++ b/PlexAPI/PlexAPISDK.cs @@ -0,0 +1,309 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Components; + using PlexAPI.Utils; + using System.Collections.Generic; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + + + /// + /// The protocol to use when connecting to your plex server. + /// + public enum ServerProtocol + { + [JsonProperty("http")] + Http, + [JsonProperty("https")] + Https, + } + + public static class ServerProtocolExtension + { + public static string Value(this ServerProtocol value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static ServerProtocol ToEnum(this string value) + { + foreach(var field in typeof(ServerProtocol).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 ServerProtocol) + { + return (ServerProtocol)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum ServerProtocol"); + } + } + /// + /// Plex-API: A Plex Media Server API Map + /// + /// + /// An Open API Spec for interacting with Plex.tv and Plex Servers + /// + /// + public interface IPlexAPISDK + { + + /// + /// Operations against the Plex Media Server System.
+ /// + /// + /// + /// + ///
+ public IServer Server { get; } + + /// + /// API Calls interacting with Plex Media Server Media
+ /// + /// + /// + /// + ///
+ public IMedia Media { get; } + + /// + /// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
+ /// + /// + /// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
+ /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
+ /// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
+ /// - They must contain an `type` which is used by clients to distinguish the specific activity.
+ /// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
+ /// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
+ /// + ///
+ ///
+ public IActivities Activities { get; } + + /// + /// Butler is the task manager of the Plex Media Server Ecosystem.
+ /// + /// + /// + /// + ///
+ public IButler Butler { get; } + + /// + /// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
+ /// + /// + /// + /// + ///
+ public IHubs Hubs { get; } + + /// + /// API Calls that perform search operations with Plex Media Server
+ /// + /// + /// + /// + ///
+ public ISearch Search { get; } + + /// + /// API Calls interacting with Plex Media Server Libraries
+ /// + /// + /// + /// + ///
+ public ILibrary Library { get; } + + /// + /// Submit logs to the Log Handler for Plex Media Server
+ /// + /// + /// + /// + ///
+ public ILog Log { get; } + + /// + /// Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017").
+ /// + /// + /// They can be organized in (optionally nesting) folders.
+ /// Retrieving a playlist, or its items, will trigger a refresh of its metadata.
+ /// This may cause the duration and number of items to change.
+ /// + ///
+ ///
+ public IPlaylists Playlists { get; } + + /// + /// API Calls against Security for Plex Media Server
+ /// + /// + /// + /// + ///
+ public ISecurity Security { get; } + + /// + /// API Calls that perform search operations with Plex Media Server Sessions
+ /// + /// + /// + /// + ///
+ public ISessions Sessions { get; } + + /// + /// This describes the API for searching and applying updates to the Plex Media Server.
+ /// + /// + /// Updates to the status can be observed via the Event API.
+ /// + ///
+ ///
+ public IUpdater Updater { get; } + + /// + /// API Calls that perform operations with Plex Media Server Videos
+ /// + /// + /// + /// + ///
+ public IVideo Video { get; } + } + + public class SDKConfig + { + public static string[] ServerList = new string[] + { + "http://10.10.10.47:32400", + "{protocol}://{ip}:{port}", + }; + /// Contains the list of servers available to the SDK + public string serverUrl = ""; + public int serverIndex = 0; + public List> ServerDefaults = new List>(); + + public string GetTemplatedServerDetails() + { + if (!String.IsNullOrEmpty(this.serverUrl)) + { + return Utilities.TemplateUrl(Utilities.RemoveSuffix(this.serverUrl, "/"), new Dictionary()); + } + return Utilities.TemplateUrl(SDKConfig.ServerList[this.serverIndex], this.ServerDefaults[this.serverIndex]); + } + } + + /// + /// Plex-API: A Plex Media Server API Map + /// + /// + /// An Open API Spec for interacting with Plex.tv and Plex Servers + /// + /// + public class PlexAPISDK: IPlexAPISDK + { + public SDKConfig SDKConfiguration { get; private set; } + + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + public IServer Server { get; private set; } + public IMedia Media { get; private set; } + public IActivities Activities { get; private set; } + public IButler Butler { get; private set; } + public IHubs Hubs { get; private set; } + public ISearch Search { get; private set; } + public ILibrary Library { get; private set; } + public ILog Log { get; private set; } + public IPlaylists Playlists { get; private set; } + public ISecurity Security { get; private set; } + public ISessions Sessions { get; private set; } + public IUpdater Updater { get; private set; } + public IVideo Video { get; private set; } + + public PlexAPISDK(Security? security = null, int? serverIndex = null, ServerProtocol? protocol = null, string? ip = null, string? port = null, string? serverUrl = null, Dictionary? urlParams = null, ISpeakeasyHttpClient? client = null) + { + if (serverUrl != null) { + if (urlParams != null) { + serverUrl = Utilities.TemplateUrl(serverUrl, urlParams); + } + _serverUrl = serverUrl; + } + List> serverDefaults = new List>() + { + new Dictionary() + { + }, + new Dictionary() + { + {"protocol", protocol == null ? "http" : ServerProtocolExtension.Value(protocol.Value)}, + {"ip", ip == null ? "10.10.10.47" : ip}, + {"port", port == null ? "32400" : port}, + }, + }; + + _defaultClient = new SpeakeasyHttpClient(client); + _securityClient = _defaultClient; + + if(security != null) + { + _securityClient = SecuritySerializer.Apply(_defaultClient, security); + } + + SDKConfiguration = new SDKConfig() + { + ServerDefaults = serverDefaults, + serverUrl = _serverUrl + }; + + Server = new Server(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Media = new Media(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Activities = new Activities(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Butler = new Butler(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Hubs = new Hubs(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Search = new Search(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Library = new Library(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Log = new Log(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Playlists = new Playlists(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Security = new Security(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Sessions = new Sessions(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Updater = new Updater(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + Video = new Video(_defaultClient, _securityClient, _serverUrl, SDKConfiguration); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Search.cs b/PlexAPI/Search.cs new file mode 100644 index 0000000..1305c0f --- /dev/null +++ b/PlexAPI/Search.cs @@ -0,0 +1,248 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// API Calls that perform search operations with Plex Media Server
+ /// + /// + /// + /// + ///
+ public interface ISearch + { + + /// + /// Perform a search + /// + /// + /// This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor).
+ ///
+ /// In the response's items, the following extra attributes are returned to further describe or disambiguate the result:
+ ///
+ /// - `reason`: The reason for the result, if not because of a direct search term match; can be either:
+ /// - `section`: There are multiple identical results from different sections.
+ /// - `originalTitle`: There was a search term match from the original title field (sometimes those can be very different or in a foreign language).
+ /// - `<hub identifier>`: If the reason for the result is due to a result in another hub, the source hub identifier is returned. For example, if the search is for "dylan" then Bob Dylan may be returned as an artist result, an a few of his albums returned as album results with a reason code of `artist` (the identifier of that particular hub). Or if the search is for "arnold", there might be movie results returned with a reason of `actor`
+ /// - `reasonTitle`: The string associated with the reason code. For a section reason, it'll be the section name; For a hub identifier, it'll be a string associated with the match (e.g. `Arnold Schwarzenegger` for movies which were returned because the search was for "arnold").
+ /// - `reasonID`: The ID of the item associated with the reason for the result. This might be a section ID, a tag ID, an artist ID, or a show ID.
+ ///
+ /// This request is intended to be very fast, and called as the user types.
+ /// + ///
+ ///
+ Task PerformSearchAsync(string query, double? sectionId = null, double? limit = null); + + /// + /// Perform a voice search + /// + /// + /// This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint.
+ /// It uses a Levenshtein distance heuristic to search titles, and as such is much slower than the other search endpoint.
+ /// Whenever possible, clients should limit the search to the appropriate type.
+ /// Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality.
+ /// + ///
+ ///
+ Task PerformVoiceSearchAsync(string query, double? sectionId = null, double? limit = null); + + /// + /// Get Search Results + /// + /// + /// This will search the database for the string provided. + /// + /// + Task GetSearchResultsAsync(string query); + } + + /// + /// API Calls that perform search operations with Plex Media Server
+ /// + /// + /// + /// + ///
+ public class Search: ISearch + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Search(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task PerformSearchAsync(string query, double? sectionId = null, double? limit = null) + { + var request = new PerformSearchRequest() + { + Query = query, + SectionId = sectionId, + Limit = limit, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/search", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new PerformSearchResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task PerformVoiceSearchAsync(string query, double? sectionId = null, double? limit = null) + { + var request = new PerformVoiceSearchRequest() + { + Query = query, + SectionId = sectionId, + Limit = limit, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/search/voice", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new PerformVoiceSearchResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetSearchResultsAsync(string query) + { + var request = new GetSearchResultsRequest() + { + Query = query, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/search", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetSearchResultsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Security.cs b/PlexAPI/Security.cs new file mode 100644 index 0000000..ae3606e --- /dev/null +++ b/PlexAPI/Security.cs @@ -0,0 +1,170 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// API Calls against Security for Plex Media Server
+ /// + /// + /// + /// + ///
+ public interface ISecurity + { + + /// + /// Get a Transient Token. + /// + /// + /// This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.
+ /// + ///
+ ///
+ Task GetTransientTokenAsync(QueryParamType type, Scope scope); + + /// + /// Get Source Connection Information + /// + /// + /// If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token.
+ /// Note: requires Plex Media Server >= 1.15.4.
+ /// + ///
+ ///
+ Task GetSourceConnectionInformationAsync(string source); + } + + /// + /// API Calls against Security for Plex Media Server
+ /// + /// + /// + /// + ///
+ public class Security: ISecurity + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Security(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetTransientTokenAsync(QueryParamType type, Scope scope) + { + var request = new GetTransientTokenRequest() + { + Type = type, + Scope = scope, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/security/token", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetTransientTokenResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetSourceConnectionInformationAsync(string source) + { + var request = new GetSourceConnectionInformationRequest() + { + Source = source, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/security/resources", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetSourceConnectionInformationResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Server.cs b/PlexAPI/Server.cs new file mode 100644 index 0000000..99067f0 --- /dev/null +++ b/PlexAPI/Server.cs @@ -0,0 +1,508 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Collections.Generic; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// Operations against the Plex Media Server System.
+ /// + /// + /// + /// + ///
+ public interface IServer + { + + /// + /// Server Capabilities + /// + /// + /// Server Capabilities + /// + /// + Task GetServerCapabilitiesAsync(); + + /// + /// Get Server Preferences + /// + /// + /// Get Server Preferences + /// + /// + Task GetServerPreferencesAsync(); + + /// + /// Get Available Clients + /// + /// + /// Get Available Clients + /// + /// + Task GetAvailableClientsAsync(); + + /// + /// Get Devices + /// + /// + /// Get Devices + /// + /// + Task GetDevicesAsync(); + + /// + /// Get Server Identity + /// + /// + /// Get Server Identity + /// + /// + Task GetServerIdentityAsync(); + + /// + /// Get MyPlex Account + /// + /// + /// Returns MyPlex Account Information + /// + /// + Task GetMyPlexAccountAsync(); + + /// + /// Get a Resized Photo + /// + /// + /// Plex's Photo transcoder is used throughout the service to serve images at specified sizes.
+ /// + ///
+ ///
+ Task GetResizedPhotoAsync(GetResizedPhotoRequest? request = null); + + /// + /// Get Server List + /// + /// + /// Get Server List + /// + /// + Task GetServerListAsync(); + } + + /// + /// Operations against the Plex Media Server System.
+ /// + /// + /// + /// + ///
+ public class Server: IServer + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Server(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetServerCapabilitiesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetServerCapabilitiesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetServerPreferencesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/:/prefs"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetServerPreferencesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetAvailableClientsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/clients"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetAvailableClientsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.ResponseBodies = JsonConvert.DeserializeObject>(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetDevicesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/devices"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetDevicesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetServerIdentityAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/identity"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetServerIdentityResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetMyPlexAccountAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/myplex/account"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetMyPlexAccountResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetResizedPhotoAsync(GetResizedPhotoRequest? request = null) + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/photo/:/transcode", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetResizedPhotoResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetServerListAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/servers"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetServerListResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Sessions.cs b/PlexAPI/Sessions.cs new file mode 100644 index 0000000..3d57831 --- /dev/null +++ b/PlexAPI/Sessions.cs @@ -0,0 +1,269 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// API Calls that perform search operations with Plex Media Server Sessions
+ /// + /// + /// + /// + ///
+ public interface ISessions + { + + /// + /// Get Active Sessions + /// + /// + /// This will retrieve the "Now Playing" Information of the PMS. + /// + /// + Task GetSessionsAsync(); + + /// + /// Get Session History + /// + /// + /// This will Retrieve a listing of all history views. + /// + /// + Task GetSessionHistoryAsync(); + + /// + /// Get Transcode Sessions + /// + /// + /// Get Transcode Sessions + /// + /// + Task GetTranscodeSessionsAsync(); + + /// + /// Stop a Transcode Session + /// + /// + /// Stop a Transcode Session + /// + /// + Task StopTranscodeSessionAsync(string sessionKey); + } + + /// + /// API Calls that perform search operations with Plex Media Server Sessions
+ /// + /// + /// + /// + ///
+ public class Sessions: ISessions + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Sessions(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetSessionsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/status/sessions"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetSessionsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetSessionHistoryAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/status/sessions/history/all"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetSessionHistoryResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetTranscodeSessionsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/transcode/sessions"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetTranscodeSessionsResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.TwoHundredApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + if((response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.FourHundredAndOneApplicationJsonObject = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task StopTranscodeSessionAsync(string sessionKey) + { + var request = new StopTranscodeSessionRequest() + { + SessionKey = sessionKey, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/transcode/sessions/{sessionKey}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new StopTranscodeSessionResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Updater.cs b/PlexAPI/Updater.cs new file mode 100644 index 0000000..b8fae64 --- /dev/null +++ b/PlexAPI/Updater.cs @@ -0,0 +1,219 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// This describes the API for searching and applying updates to the Plex Media Server.
+ /// + /// + /// Updates to the status can be observed via the Event API.
+ /// + ///
+ ///
+ public interface IUpdater + { + + /// + /// Querying status of updates + /// + /// + /// Querying status of updates + /// + /// + Task GetUpdateStatusAsync(); + + /// + /// Checking for updates + /// + /// + /// Checking for updates + /// + /// + Task CheckForUpdatesAsync(Download? download = null); + + /// + /// Apply Updates + /// + /// + /// Note that these two parameters are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed
+ /// + ///
+ ///
+ Task ApplyUpdatesAsync(Tonight? tonight = null, Skip? skip = null); + } + + /// + /// This describes the API for searching and applying updates to the Plex Media Server.
+ /// + /// + /// Updates to the status can be observed via the Event API.
+ /// + ///
+ ///
+ public class Updater: IUpdater + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Updater(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task GetUpdateStatusAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = baseUrl + "/updater/status"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetUpdateStatusResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task CheckForUpdatesAsync(Download? download = null) + { + var request = new CheckForUpdatesRequest() + { + Download = download, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/updater/check", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new CheckForUpdatesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task ApplyUpdatesAsync(Tonight? tonight = null, Skip? skip = null) + { + var request = new ApplyUpdatesRequest() + { + Tonight = tonight, + Skip = skip, + }; + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/updater/apply", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new ApplyUpdatesResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400) || (response.StatusCode == 500)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/PlexAPI/Utils/BigIntSerializer.cs b/PlexAPI/Utils/BigIntSerializer.cs new file mode 100644 index 0000000..3bf157e --- /dev/null +++ b/PlexAPI/Utils/BigIntSerializer.cs @@ -0,0 +1,50 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Globalization; + using System.Numerics; + using Newtonsoft.Json; + + internal class BigIntSerializer : JsonConverter + { + public override bool CanConvert(Type objectType) => objectType == typeof(BigInteger); + + public override bool CanRead => true; + + public override object? ReadJson( + JsonReader reader, + Type objectType, + object? existingValue, + JsonSerializer serializer + ) + { + if (reader.Value == null) + { + return null; + } + + return BigInteger.Parse(reader.Value.ToString()!); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + writer.WriteValue("null"); + return; + } + + writer.WriteValue(((BigInteger)value).ToString(CultureInfo.InvariantCulture)); + } + } +} diff --git a/PlexAPI/Utils/DecimalSerializer.cs b/PlexAPI/Utils/DecimalSerializer.cs new file mode 100644 index 0000000..b8e69f8 --- /dev/null +++ b/PlexAPI/Utils/DecimalSerializer.cs @@ -0,0 +1,49 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Globalization; + using Newtonsoft.Json; + + internal class DecimalSerializer : JsonConverter + { + public override bool CanConvert(Type objectType) => objectType == typeof(Decimal); + + public override bool CanRead => true; + + public override object? ReadJson( + JsonReader reader, + Type objectType, + object? existingValue, + JsonSerializer serializer + ) + { + if (reader.Value == null) + { + return null; + } + + return Decimal.Parse(reader.Value.ToString()!); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + writer.WriteValue("null"); + return; + } + + writer.WriteValue(((Decimal)value).ToString(CultureInfo.InvariantCulture)); + } + } +} diff --git a/PlexAPI/Utils/EnumSerializer.cs b/PlexAPI/Utils/EnumSerializer.cs new file mode 100644 index 0000000..b09a1ee --- /dev/null +++ b/PlexAPI/Utils/EnumSerializer.cs @@ -0,0 +1,67 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +using System; +using Newtonsoft.Json; + +namespace PlexAPI.Utils +{ + internal class EnumSerializer : JsonConverter + { + public override bool CanConvert(System.Type objectType) => objectType.IsEnum; + + public override bool CanRead => true; + + public override object? ReadJson( + JsonReader reader, + System.Type objectType, + object? existingValue, + JsonSerializer serializer + ) + { + if (reader.Value == null) + { + throw new ArgumentNullException(nameof(reader.Value)); + } + + var extensionType = System.Type.GetType(objectType.FullName + "Extension"); + if (extensionType == null) + { + return Enum.ToObject(objectType, reader.Value); + } + + var method = extensionType.GetMethod("ToEnum"); + if (method == null) + { + throw new Exception($"Unable to find ToEnum method on {extensionType.FullName}"); + } + + return method.Invoke(null, new[] { (string)reader.Value }); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + writer.WriteValue("null"); + return; + } + + var extensionType = System.Type.GetType(value.GetType().FullName + "Extension"); + if (extensionType == null) + { + writer.WriteValue(value); + return; + } + + writer.WriteValue(Utilities.ToString(value)); + } + } +} diff --git a/PlexAPI/Utils/FlexibleObjectDeserializer.cs b/PlexAPI/Utils/FlexibleObjectDeserializer.cs new file mode 100644 index 0000000..3bff328 --- /dev/null +++ b/PlexAPI/Utils/FlexibleObjectDeserializer.cs @@ -0,0 +1,44 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Linq; + using System.Collections.Generic; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + + internal class FlexibleObjectDeserializer: JsonConverter + { + public override bool CanConvert(Type objectType) => + objectType == typeof(object); + + public override bool CanWrite => false; + + public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) + { + var token = JToken.ReadFrom(reader); + + if (token is JArray) + { + return new List(token.Select(t => + { + return t.ToString(); + })); + } + + return token.ToObject(objectType); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) => + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/PlexAPI/Utils/HeaderSerializer.cs b/PlexAPI/Utils/HeaderSerializer.cs new file mode 100644 index 0000000..5ad3572 --- /dev/null +++ b/PlexAPI/Utils/HeaderSerializer.cs @@ -0,0 +1,129 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System.Collections; + using System.Collections.Generic; + using System.Net.Http; + using System.Reflection; + + internal static class HeaderSerializer + { + public static void PopulateHeaders(ref HttpRequestMessage httpRequest, object? request) + { + if (request == null) + { + return; + } + + var props = request.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(request); + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetHeaderMetadata(); + if (metadata == null || metadata.Name == "") + { + continue; + } + + var headerValue = SerializeHeader(val, metadata.Explode); + if (headerValue != "") + { + httpRequest.Headers.Add(metadata.Name, headerValue); + } + } + } + + private static string SerializeHeader(object value, bool explode) + { + if (Utilities.IsClass(value)) + { + var items = new List(); + + var props = value.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(value); + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetHeaderMetadata(); + if (metadata == null || metadata.Name == null) + { + continue; + } + + if (explode) + { + items.Add($"{metadata.Name}={Utilities.ValueToString(val)}"); + } + else + { + items.Add(metadata.Name); + items.Add(Utilities.ValueToString(val)); + } + } + + return string.Join(",", items); + } + else if (Utilities.IsDictionary(value)) + { + var items = new List(); + + foreach (DictionaryEntry entry in (IDictionary)value) + { + var key = entry.Key?.ToString(); + + if (key == null) + { + continue; + } + + if (explode) + { + items.Add($"{key}={Utilities.ValueToString(entry.Value)}"); + } + else + { + items.Add(key); + items.Add(Utilities.ValueToString(entry.Value)); + } + } + + return string.Join(",", items); + } + else if (Utilities.IsList(value)) + { + var items = new List(); + + foreach (var item in (IList)value) + { + items.Add(Utilities.ValueToString(item)); + } + + return string.Join(",", items); + } + else + { + return Utilities.ValueToString(value); + } + } + } +} diff --git a/PlexAPI/Utils/IsoDateTimeSerializer.cs b/PlexAPI/Utils/IsoDateTimeSerializer.cs new file mode 100644 index 0000000..d9675e9 --- /dev/null +++ b/PlexAPI/Utils/IsoDateTimeSerializer.cs @@ -0,0 +1,41 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Globalization; + using Newtonsoft.Json; + + internal class IsoDateTimeSerializer: JsonConverter + { + public override bool CanConvert(Type objectType) => + objectType == typeof(DateTime); + + public override bool CanRead => false; + + public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) => + throw new NotImplementedException(); + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + writer.WriteValue("null"); + return; + } + + DateTime time = (DateTime)value; + // The built-in Iso converter coerces to local time; + // This standardizes to UTC. + writer.WriteValue(time.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture)); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Utils/RequestBodySerializer.cs b/PlexAPI/Utils/RequestBodySerializer.cs new file mode 100644 index 0000000..c63ee64 --- /dev/null +++ b/PlexAPI/Utils/RequestBodySerializer.cs @@ -0,0 +1,502 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Net.Http; + using System.Reflection; + using System.Text; + + internal class RequestBodySerializer + { + public static HttpContent? Serialize( + object? request, + string requestFieldName, + string serializationMethod + ) + { + if (request == null) + { + return null; + } + + if (Utilities.IsClass(request)) + { + var prop = GetPropertyInfo(request, requestFieldName); + + if (prop != null) + { + var metadata = prop.GetCustomAttribute()?.GetRequestMetadata(); + if (metadata != null) + { + var fieldValue = prop.GetValue(request); + if (fieldValue == null) + { + return null; + } + + return TrySerialize( + fieldValue, + requestFieldName, + serializationMethod, + metadata.MediaType ?? "" + ); + } + } + } + + // Not an object or flattened request + return TrySerialize(request, requestFieldName, serializationMethod); + } + + private static HttpContent? TrySerialize( + object request, + string requestFieldName, + string serializationMethod, + string mediaType = "" + ) + { + if (mediaType == "") + { + mediaType = new Dictionary() + { + { "json", "application/json" }, + { "form", "application/x-www-form-urlencoded" }, + { "multipart", "multipart/form-data" }, + { "raw", "application/octet-stream" }, + { "string", "text/plain" }, + }[serializationMethod]; + } + + switch (serializationMethod) + { + case "json": + return SerializeJson(request, mediaType); + case "form": + return SerializeForm(request, requestFieldName, mediaType); + case "multipart": + return SerializeMultipart(request, mediaType); + default: + // if request is a byte array, use it directly otherwise encode + if (request.GetType() == typeof(byte[])) + { + return SerializeRaw((byte[])request, mediaType); + } + else if (request.GetType() == typeof(string)) + { + return SerializeString((string)request, mediaType); + } + else + { + throw new Exception( + "Cannot serialize request body of type " + + request.GetType().Name + + " with serialization method " + + serializationMethod + + "" + ); + } + } + } + + private static HttpContent SerializeJson(object request, string mediaType) + { + return new StringContent(Utilities.SerializeJSON(request), Encoding.UTF8, mediaType); + } + + private static HttpContent SerializeForm( + object request, + string requestFieldName, + string mediaType + ) + { + Dictionary> form = new Dictionary>(); + + if (Utilities.IsClass(request)) + { + var props = request.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(request); + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetFormMetadata(); + if (metadata == null) + { + continue; + } + + if (metadata.Json) + { + var key = metadata.Name ?? prop.Name; + if (key == "") + { + continue; + } + + if (!form.ContainsKey(key)) + { + form.Add(key, new List()); + } + + form[key].Add(Utilities.SerializeJSON(val)); + } + else + { + switch (metadata.Style) + { + case "form": + SerializeFormValue( + metadata.Name ?? prop.Name, + metadata.Explode, + val, + ref form + ); + break; + default: + throw new Exception("Unsupported form style " + metadata.Style); + } + } + } + } + else if (Utilities.IsDictionary(request)) + { + foreach (var k in ((IDictionary)request).Keys) + { + var key = k?.ToString(); + + if (key == null) + { + continue; + } + + if (!form.ContainsKey(key)) + { + form.Add(key, new List()); + } + + form[key].Add(Utilities.ValueToString(((IDictionary)request)[key])); + } + } + else if (Utilities.IsList(request)) + { + foreach (var item in (IList)request) + { + if (!form.ContainsKey(requestFieldName)) + { + form.Add(requestFieldName, new List()); + } + + form[requestFieldName].Add(Utilities.ValueToString(item)); + } + } + else + { + throw new Exception( + "Cannot serialize form data from type " + request.GetType().Name + ); + } + + var formData = new List>(); + + foreach (var key in form.Keys) + { + foreach (var val in form[key]) + { + formData.Add( + new KeyValuePair( + key + (form[key].Count > 1 ? "[]" : ""), + val + ) + ); + } + } + + return new FormUrlEncodedContent(formData); + } + + private static HttpContent SerializeMultipart(object request, string mediaType) + { + var formData = new MultipartFormDataContent(); + + var properties = request.GetType().GetProperties(); + + foreach (var prop in properties) + { + var value = prop.GetValue(request); + if (value == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetMultipartFormMetadata(); + if (metadata == null) + { + continue; + } + + if (metadata.File) + { + if (!Utilities.IsClass(value)) + { + throw new Exception( + "Cannot serialize multipart file from type " + value.GetType().Name + ); + } + + var fileProps = value.GetType().GetProperties(); + + byte[]? content = null; + string fileName = ""; + string fieldName = ""; + + foreach (var fileProp in fileProps) + { + var fileMetadata = fileProp + .GetCustomAttribute() + ?.GetMultipartFormMetadata(); + if ( + fileMetadata == null + || (!fileMetadata.Content && fileMetadata.Name == "") + ) + { + continue; + } + + if (fileMetadata.Content) + { + content = (byte[]?)fileProp.GetValue(value); + } + else + { + fieldName = fileMetadata.Name ?? fileProp.Name; + fileName = fileProp.GetValue(value)?.ToString() ?? ""; + } + } + + if (fieldName == "" || fileName == "" || content == null) + { + throw new Exception("Invalid multipart/form-data file"); + } + + formData.Add(new ByteArrayContent(content), fieldName, fileName); + } + else if (metadata.Json) + { + formData.Add( + new StringContent(Utilities.SerializeJSON(value)), + metadata.Name ?? prop.Name + ); + } + else if (Utilities.IsList(value)) + { + var values = new List(); + + foreach (var item in (IList)value) + { + values.Add(Utilities.ValueToString(item)); + } + + foreach (var val in values) + { + formData.Add(new StringContent(val), metadata.Name ?? prop.Name); + } + } + else + { + formData.Add( + new StringContent(Utilities.ValueToString(value)), + metadata.Name ?? prop.Name + ); + } + } + + return formData; + } + + private static HttpContent SerializeRaw(byte[] request, string mediaType) + { + var content = new ByteArrayContent(request); + content.Headers.Add("Content-Type", mediaType); + return content; + } + + private static HttpContent SerializeString(string request, string mediaType) + { + return new StringContent(request, Encoding.UTF8, mediaType); + } + + private static void SerializeFormValue( + string fieldName, + bool explode, + object value, + ref Dictionary> form + ) + { + if (Utilities.IsClass(value)) + { + if (Utilities.IsDate(value)) + { + if (!form.ContainsKey(fieldName)) + { + form[fieldName] = new List(); + } + + form[fieldName].Add(Utilities.ValueToString(value)); + } + else + { + var props = value.GetType().GetProperties(); + + var items = new List(); + + foreach (var prop in props) + { + var val = prop.GetValue(value); + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetFormMetadata(); + if (metadata == null || metadata.Name == null) + { + continue; + } + + if (explode) + { + if (!form.ContainsKey(metadata.Name)) + { + form[metadata.Name] = new List(); + } + + form[metadata.Name].Add(Utilities.ValueToString(val)); + } + else + { + items.Add($"{metadata.Name},{Utilities.ValueToString(val)}"); + } + } + + if (items.Count > 0) + { + if (!form.ContainsKey(fieldName)) + { + form[fieldName] = new List(); + } + + form[fieldName].Add(string.Join(",", items)); + } + } + } + else if (Utilities.IsDictionary(value)) + { + var items = new List(); + + foreach (var k in ((IDictionary)value).Keys) + { + var key = k?.ToString(); + + if (key == null) + { + continue; + } + + if (explode) + { + if (!form.ContainsKey(key)) + { + form[key] = new List(); + } + + form[key].Add( + Utilities.ValueToString(((IDictionary)value)[key]) + ); + } + else + { + items.Add($"{key},{Utilities.ValueToString(((IDictionary)value)[key])}"); + } + } + + if (items.Count > 0) + { + if (!form.ContainsKey(fieldName)) + { + form[fieldName] = new List(); + } + + form[fieldName].Add(string.Join(",", items)); + } + } + else if (Utilities.IsList(value)) + { + var values = new List(); + var items = new List(); + + foreach (var item in (IList)value) + { + if (explode) + { + values.Add(Utilities.ValueToString(item)); + } + else + { + items.Add(Utilities.ValueToString(item)); + } + } + + if (items.Count > 0) + { + values.Add(string.Join(",", items)); + } + + foreach (var val in values) + { + if (!form.ContainsKey(fieldName)) + { + form[fieldName] = new List(); + } + + form[fieldName].Add(val); + } + } + else + { + if (!form.ContainsKey(fieldName)) + { + form[fieldName] = new List(); + } + + form[fieldName].Add(Utilities.ValueToString(value)); + } + } + + private static PropertyInfo? GetPropertyInfo(object value, string propertyName) + { + try + { + return value.GetType().GetProperty(propertyName); + } + catch (Exception) + { + return null; + } + } + } +} \ No newline at end of file diff --git a/PlexAPI/Utils/SecuritySerializer.cs b/PlexAPI/Utils/SecuritySerializer.cs new file mode 100644 index 0000000..b8210b5 --- /dev/null +++ b/PlexAPI/Utils/SecuritySerializer.cs @@ -0,0 +1,227 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Reflection; + using System.Text; + + internal static class SecuritySerializer + { + public static ISpeakeasyHttpClient Apply(ISpeakeasyHttpClient client, object security) + { + if (security == null) + { + return client; + } + + client = new SpeakeasyHttpClient(client); + + var props = security.GetType().GetProperties(); + + foreach (var prop in props) + { + var value = prop.GetValue(security, null); + + if (value == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetSecurityMetadata(); + if (metadata == null) + { + continue; + } + + if (metadata.Option) + { + ApplyOption(ref client, value); + } + else if (metadata.Scheme) + { + if (metadata.SubType == "basic" && !Utilities.IsClass(value)) + { + ApplyScheme(ref client, metadata, security); + return client; + } + else + { + ApplyScheme(ref client, metadata, value); + } + } + } + + return client; + } + + private static void ApplyOption(ref ISpeakeasyHttpClient client, object option) + { + var props = option.GetType().GetProperties(); + + foreach (var prop in props) + { + var value = prop.GetValue(option, null); + + if (value == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetSecurityMetadata(); + if (metadata == null || !metadata.Scheme) + { + continue; + } + + ApplyScheme(ref client, metadata, value); + } + } + + private static void ApplyScheme( + ref ISpeakeasyHttpClient client, + SpeakeasyMetadata.SecurityMetadata schemeMetadata, + object scheme + ) + { + if (Utilities.IsClass(scheme)) + { + if (schemeMetadata.Type == "http" && schemeMetadata.SubType == "basic") + { + ApplyBasicAuthScheme(ref client, scheme); + return; + } + + var props = scheme.GetType().GetProperties(); + + foreach (var prop in props) + { + var value = prop.GetValue(scheme, null); + + if (value == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetSecurityMetadata(); + if (metadata == null || metadata.Name == "") + { + continue; + } + + ApplySchemeValue(ref client, schemeMetadata, metadata, value); + } + } + else + { + ApplySchemeValue(ref client, schemeMetadata, schemeMetadata, scheme); + } + } + + private static void ApplySchemeValue( + ref ISpeakeasyHttpClient client, + SpeakeasyMetadata.SecurityMetadata schemeMetadata, + SpeakeasyMetadata.SecurityMetadata valueMetadata, + object value + ) + { + if (valueMetadata.Name == "") + { + return; + } + + switch (schemeMetadata.Type) + { + case "apiKey": + switch (schemeMetadata.SubType) + { + case "header": + client.AddHeader(valueMetadata.Name, Utilities.ValueToString(value)); + break; + case "query": + client.AddQueryParam( + valueMetadata.Name, + Utilities.ValueToString(value) + ); + break; + case "cookie": + client.AddHeader( + "cookie", + $"{valueMetadata.Name}={Utilities.ValueToString(value)}" + ); + break; + default: + throw new Exception( + $"Unknown apiKey subType: {schemeMetadata.SubType}" + ); + } + break; + case "openIdConnect": + client.AddHeader(valueMetadata.Name, Utilities.ValueToString(value)); + break; + case "oauth2": + client.AddHeader(valueMetadata.Name, Utilities.ValueToString(value)); + break; + case "http": + switch (schemeMetadata.SubType) + { + case "bearer": + client.AddHeader( + valueMetadata.Name, + Utilities.PrefixBearer(Utilities.ValueToString(value)) + ); + break; + default: + throw new Exception($"Unknown http subType: {schemeMetadata.SubType}"); + } + break; + default: + throw new Exception($"Unknown security type: {schemeMetadata.Type}"); + } + } + + private static void ApplyBasicAuthScheme(ref ISpeakeasyHttpClient client, object scheme) + { + var props = scheme.GetType().GetProperties(); + + string username = ""; + string password = ""; + + foreach (var prop in props) + { + var value = prop.GetValue(scheme, null); + + if (value == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetSecurityMetadata(); + if (metadata == null || metadata.Name == "") + { + continue; + } + + if (metadata.Name == "username") + { + username = Utilities.ValueToString(value); + } + else if (metadata.Name == "password") + { + password = Utilities.ValueToString(value); + } + } + + var auth = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")); + client.AddHeader("Authorization", $"Basic {auth}"); + } + } +} diff --git a/PlexAPI/Utils/SpeakeasyHttpClient.cs b/PlexAPI/Utils/SpeakeasyHttpClient.cs new file mode 100644 index 0000000..176d9c7 --- /dev/null +++ b/PlexAPI/Utils/SpeakeasyHttpClient.cs @@ -0,0 +1,96 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Threading.Tasks; + + public interface ISpeakeasyHttpClient + { + void AddHeader(string key, string value); + void AddQueryParam(string key, string value); + Task SendAsync(HttpRequestMessage message); + } + + public class SpeakeasyHttpClient : ISpeakeasyHttpClient + { + private ISpeakeasyHttpClient? client; + + private Dictionary> headers { get; } = + new Dictionary>(); + + private Dictionary> queryParams { get; } = + new Dictionary>(); + + internal SpeakeasyHttpClient(ISpeakeasyHttpClient? client = null) + { + this.client = client; + } + + public void AddHeader(string key, string value) + { + if (headers.ContainsKey(key)) + { + headers[key].Add(value); + } + else + { + headers.Add(key, new List { value }); + } + } + + public void AddQueryParam(string key, string value) + { + if (queryParams.ContainsKey(key)) + { + queryParams[key].Add(value); + } + else + { + queryParams.Add(key, new List { value }); + } + } + + public async Task SendAsync(HttpRequestMessage message) + { + foreach(var hh in headers) + { + foreach(var hv in hh.Value) + { + message.Headers.Add(hh.Key, hv); + } + } + + /*var qp = URLBuilder.SerializeQueryParams(queryParams); + + if (qp != "") + { + if (message.uri.Query == "") + { + message.url += "?" + qp; + } + else + { + message.url += "&" + qp; + } + }*/ + + if (client != null) + { + return await client.SendAsync(message); + } + + return await new HttpClient().SendAsync(message); + } + } +} \ No newline at end of file diff --git a/PlexAPI/Utils/SpeakeasyMetadata.cs b/PlexAPI/Utils/SpeakeasyMetadata.cs new file mode 100644 index 0000000..ea89922 --- /dev/null +++ b/PlexAPI/Utils/SpeakeasyMetadata.cs @@ -0,0 +1,243 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Collections.Generic; + + [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] + internal class SpeakeasyMetadata : Attribute + { + internal class RequestMetadata + { + public string? MediaType { get; set; } = null; + } + + internal class FormMetadata + { + public string Style { get; set; } = "form"; + public bool Explode { get; set; } = true; + public bool Json { get; set; } = false; + public string Name { get; set; } = ""; + } + + internal class MultipartFormMetadata + { + public bool File { get; set; } = false; + public bool Content { get; set; } = false; + public bool Json { get; set; } = false; + public string Name { get; set; } = ""; + } + + internal class PathParamMetadata + { + public string Style { get; set; } = "simple"; + public bool Explode { get; set; } = false; + public string Name { get; set; } = ""; + public string? Serialization { get; set; } = null; + } + + internal class QueryParamMetadata + { + public string Style { get; set; } = "form"; + public bool Explode { get; set; } = true; + public string Name { get; set; } = ""; + public string? Serialization { get; set; } = null; + } + + internal class HeaderMetadata + { + public string Style { get; set; } = "simple"; + public bool Explode { get; set; } = false; + public string Name { get; set; } = ""; + } + + internal class SecurityMetadata + { + public string? Type { get; set; } = null; + public string? SubType { get; set; } = null; + public bool Option { get; set; } = false; + public bool Scheme { get; set; } = false; + public string Name { get; set; } = ""; + } + + public string Value { get; set; } + private Dictionary? metadata; + + public SpeakeasyMetadata(string value) + { + Value = value; + } + + public RequestMetadata? GetRequestMetadata() + { + if (GetMetadata().TryGetValue("request", out var value)) + { + var metadata = new RequestMetadata(); + + ParseMetadata(value, ref metadata); + + return metadata; + } + + return null; + } + + public FormMetadata? GetFormMetadata() + { + if (GetMetadata().TryGetValue("form", out var value)) + { + var metadata = new FormMetadata(); + + ParseMetadata(value, ref metadata); + + return metadata; + } + + return null; + } + + public MultipartFormMetadata? GetMultipartFormMetadata() + { + if (GetMetadata().TryGetValue("multipartForm", out var value)) + { + var metadata = new MultipartFormMetadata(); + + ParseMetadata(value, ref metadata); + + return metadata; + } + + return null; + } + + public PathParamMetadata? GetPathParamMetadata() + { + if (GetMetadata().TryGetValue("pathParam", out var value)) + { + var metadata = new PathParamMetadata(); + ParseMetadata(value, ref metadata); + return metadata; + } + + return null; + } + + public QueryParamMetadata? GetQueryParamMetadata() + { + if (GetMetadata().TryGetValue("queryParam", out var value)) + { + var metadata = new QueryParamMetadata(); + + ParseMetadata(value, ref metadata); + + return metadata; + } + + return null; + } + + public HeaderMetadata? GetHeaderMetadata() + { + if (GetMetadata().TryGetValue("header", out var value)) + { + var metadata = new HeaderMetadata(); + + ParseMetadata(value, ref metadata); + + return metadata; + } + + return null; + } + + public SecurityMetadata? GetSecurityMetadata() + { + if (GetMetadata().TryGetValue("security", out var value)) + { + var metadata = new SecurityMetadata(); + + ParseMetadata(value, ref metadata); + + return metadata; + } + + return null; + } + + private Dictionary GetMetadata() + { + if (metadata != null) + { + return metadata; + } + + metadata = new Dictionary(); + + var groups = Value.Split(" "); + + foreach (var group in groups) + { + var parts = group.Split(":"); + + if (parts.Length != 2) + { + continue; + } + + metadata.Add(parts[0], parts[1]); + } + + return metadata; + } + + private void ParseMetadata(string raw, ref T metadata) + { + Dictionary values = new Dictionary(); + + var groups = raw.Split(","); + + foreach (var group in groups) + { + var parts = group.Split("="); + var val = ""; + if (parts.Length == 2) + { + val = parts[1]; + } + + values.Add(parts[0], val); + } + + var props = typeof(T).GetProperties(); + + foreach (var prop in props) + { + if ( + values.TryGetValue( + char.ToLower(prop.Name[0]) + prop.Name.Substring(1), + out var value + ) + ) + { + if (prop.PropertyType == typeof(bool) || prop.PropertyType == typeof(Boolean)) + { + prop.SetValue(metadata, value == "true" || value == ""); + } + else + { + prop.SetValue(metadata, value); + } + } + } + } + } +} diff --git a/PlexAPI/Utils/URLBuilder.cs b/PlexAPI/Utils/URLBuilder.cs new file mode 100644 index 0000000..2a15ae8 --- /dev/null +++ b/PlexAPI/Utils/URLBuilder.cs @@ -0,0 +1,589 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Net; + using System.Reflection; + + internal static class URLBuilder + { + public static string Build(string baseUrl, string path, object? request) + { + var url = baseUrl; + + if (url.EndsWith("/")) + { + url = url.Substring(0, url.Length - 1); + } + + url += path; + + var parameters = GetPathParameters(request); + + url = ReplaceParameters(url, parameters); + + var queryParams = SerializeQueryParams(TrySerializeQueryParams(request)); + + if (queryParams != "") + { + url += $"?{queryParams}"; + } + + return url; + } + + public static string ReplaceParameters(string url, Dictionary parameters) + { + foreach (var key in parameters.Keys) + { + url = url.Replace($"{{{key}}}", parameters[key]); + } + + return url; + } + + public static string SerializeQueryParams(Dictionary> queryParams) { + var queries = new List(); + + foreach (var key in queryParams.Keys) + { + foreach (var value in queryParams[key]) + { + queries.Add($"{key}={value}"); + } + } + + return string.Join("&", queries); + } + + private static Dictionary GetPathParameters(object? request) + { + var parameters = new Dictionary(); + + if (request == null) + { + return parameters; + } + + var props = request.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(request); + + if (val == null) + { + continue; + } + + if (prop.GetCustomAttribute()?.GetRequestMetadata() != null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetPathParamMetadata(); + + if (metadata == null) + { + continue; + } + + if (metadata.Serialization != null) + { + switch (metadata.Serialization) + { + case "json": + parameters.Add( + metadata.Name ?? prop.Name, + WebUtility.UrlEncode(Utilities.SerializeJSON(val)) + ); + break; + default: + throw new Exception( + $"Unknown serialization type: {metadata.Serialization}" + ); + } + } + else + { + switch (metadata.Style) + { + case "simple": + var simpleParams = SerializeSimplePathParams( + metadata.Name ?? prop.Name, + val, + metadata.Explode + ); + foreach (var key in simpleParams.Keys) + { + parameters.Add(key, simpleParams[key]); + } + break; + default: + throw new Exception($"Unsupported path param style: {metadata.Style}"); + } + } + } + + return parameters; + } + + private static Dictionary> TrySerializeQueryParams(object? request) + { + var parameters = new Dictionary>(); + + if (request == null) + { + return parameters; + } + + var props = request.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(request); + + if (val == null) + { + continue; + } + + if (prop.GetCustomAttribute()?.GetRequestMetadata() != null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetQueryParamMetadata(); + if (metadata == null) + { + continue; + } + + if (metadata.Serialization != null) + { + switch (metadata.Serialization) + { + case "json": + if (!parameters.ContainsKey(metadata.Name ?? prop.Name)) + { + parameters.Add(metadata.Name ?? prop.Name, new List()); + } + + parameters[metadata.Name ?? prop.Name].Add( + Utilities.SerializeJSON(val) + ); + break; + default: + throw new Exception( + $"Unknown serialization type: {metadata.Serialization}" + ); + } + } + else + { + switch (metadata.Style) + { + case "form": + var formParams = SerializeFormQueryParams( + metadata.Name ?? prop.Name, + val, + metadata.Explode, + "," + ); + foreach (var key in formParams.Keys) + { + if (!parameters.ContainsKey(key)) + { + parameters.Add(key, new List()); + } + + foreach (var v in formParams[key]) + { + parameters[key].Add(v); + } + } + break; + case "deepObject": + var deepObjParams = SerializeDeepObjectQueryParams( + metadata.Name ?? prop.Name, + val + ); + foreach (var key in deepObjParams.Keys) + { + if (!parameters.ContainsKey(key)) + { + parameters.Add(key, new List()); + } + + foreach (var v in deepObjParams[key]) + { + parameters[key].Add(v); + } + } + break; + case "pipeDelimited": + var pipeParams = SerializeFormQueryParams( + metadata.Name ?? prop.Name, + val, + metadata.Explode, + "|" + ); + foreach (var key in pipeParams.Keys) + { + if (!parameters.ContainsKey(key)) + { + parameters.Add(key, new List()); + } + + foreach (var v in pipeParams[key]) + { + parameters[key].Add(v); + } + } + break; + default: + throw new Exception($"Unsupported query param style: {metadata.Style}"); + } + } + } + + return parameters; + } + + private static Dictionary SerializeSimplePathParams( + string parentName, + object value, + bool explode + ) + { + var parameters = new Dictionary(); + + if (Utilities.IsClass(value)) + { + var vals = new List(); + + var props = value.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(value); + + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetPathParamMetadata(); + if (metadata == null) + { + continue; + } + + if (explode) + { + vals.Add($"{metadata.Name}={Utilities.ToString(val)}"); + } + else + { + vals.Add($"{metadata.Name},{Utilities.ToString(val)}"); + } + } + + parameters.Add(parentName, string.Join(",", vals)); + } + else if (Utilities.IsDictionary(value)) + { + var vals = new List(); + + foreach (var key in ((IDictionary)value).Keys) + { + if (key == null) + { + continue; + } + + var val = ((IDictionary)value)[key]; + + if (explode) + { + vals.Add($"{key}={Utilities.ToString(val)}"); + } + else + { + vals.Add($"{key},{Utilities.ToString(val)}"); + } + } + + parameters.Add(parentName, string.Join(",", vals)); + } + else if (Utilities.IsList(value)) + { + var vals = new List(); + + foreach (var val in (IEnumerable)value) + { + vals.Add(Utilities.ToString(val)); + } + + parameters.Add(parentName, string.Join(",", vals)); + } + else + { + parameters.Add(parentName, Utilities.ToString(value)); + } + + return parameters; + } + + private static Dictionary> SerializeFormQueryParams( + string parentName, + object value, + bool explode, + string delimiter + ) + { + var parameters = new Dictionary>(); + + if (Utilities.IsClass(value) && !Utilities.IsDate(value)) + { + var props = value.GetType().GetProperties(); + + var items = new List(); + + foreach (var prop in props) + { + var val = prop.GetValue(value); + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetQueryParamMetadata(); + if (metadata == null || metadata.Name == null) + { + continue; + } + + if (explode) + { + if (!parameters.ContainsKey(metadata.Name)) + { + parameters.Add(metadata.Name, new List()); + } + + parameters[metadata.Name].Add( + Utilities.ToString(val) + ); + } + else + { + items.Add( + $"{metadata.Name}{delimiter}{Utilities.ValueToString(val)}" + ); + } + } + + if (items.Count > 0) + { + if (!parameters.ContainsKey(parentName)) + { + parameters.Add(parentName, new List()); + } + + parameters[parentName].Add(string.Join(delimiter, items)); + } + } + else if (Utilities.IsDictionary(value)) + { + var items = new List(); + + foreach (var k in ((IDictionary)value).Keys) + { + var key = k?.ToString(); + + if (key == null) + { + continue; + } + + if (explode) + { + if (!parameters.ContainsKey(key)) + { + parameters.Add(key, new List()); + } + + parameters[key].Add( + Utilities.ValueToString(((IDictionary)value)[key]) + ); + } + else + { + items.Add( + $"{key}{delimiter}{Utilities.ValueToString(((IDictionary)value)[key])}" + ); + } + } + + if (items.Count > 0) + { + if (!parameters.ContainsKey(parentName)) + { + parameters.Add(parentName, new List()); + } + + parameters[parentName].Add(string.Join(delimiter, items)); + } + } + else if (Utilities.IsList(value)) + { + var values = new List(); + var items = new List(); + + foreach (var item in (IList)value) + { + if (explode) + { + values.Add(Utilities.ValueToString(item)); + } + else + { + items.Add(Utilities.ValueToString(item)); + } + } + + if (items.Count > 0) + { + values.Add(string.Join(delimiter, items)); + } + + foreach (var val in values) + { + if (!parameters.ContainsKey(parentName)) + { + parameters.Add(parentName, new List()); + } + + parameters[parentName].Add(val); + } + } + else + { + if (!parameters.ContainsKey(parentName)) + { + parameters.Add(parentName, new List()); + } + + parameters[parentName].Add(Utilities.ValueToString(value)); + } + + return parameters; + } + + private static Dictionary> SerializeDeepObjectQueryParams( + string parentName, + object value + ) + { + var parameters = new Dictionary>(); + + if (Utilities.IsClass(value)) + { + var props = value.GetType().GetProperties(); + + foreach (var prop in props) + { + var val = prop.GetValue(value); + + if (val == null) + { + continue; + } + + var metadata = prop.GetCustomAttribute()?.GetQueryParamMetadata(); + if (metadata == null || metadata.Name == null) + { + continue; + } + + var keyName = $"{parentName}[{metadata.Name}]"; + + if (val != null && Utilities.IsList(val)) + { + foreach (var v in (IList)val) + { + if (!parameters.ContainsKey(keyName)) + { + parameters.Add(keyName, new List()); + } + + parameters[keyName].Add( + Utilities.ValueToString(v) + ); + } + } + else + { + if (!parameters.ContainsKey(keyName)) + { + parameters.Add(keyName, new List()); + } + + parameters[keyName].Add(Utilities.ValueToString(val)); + } + } + } + else if (Utilities.IsDictionary(value)) + { + foreach (var key in ((IDictionary)value).Keys) + { + if (key == null) + { + continue; + } + + var val = ((IDictionary)value)[key]; + + var keyName = $"{parentName}[{key}]"; + + if (val != null && Utilities.IsList(val)) + { + foreach (var v in (IList)val) + { + if (!parameters.ContainsKey(keyName)) + { + parameters.Add(keyName, new List()); + } + + parameters[keyName].Add( + Utilities.ValueToString(v) + ); + } + } + else + { + if (!parameters.ContainsKey(keyName)) + { + parameters.Add(keyName, new List()); + } + + parameters[keyName].Add(Utilities.ValueToString(val)); + } + } + } + + return parameters; + } + } +} diff --git a/PlexAPI/Utils/Utilities.cs b/PlexAPI/Utils/Utilities.cs new file mode 100644 index 0000000..1157f98 --- /dev/null +++ b/PlexAPI/Utils/Utilities.cs @@ -0,0 +1,241 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI.Utils +{ + using System; + using System.Linq; + using System.Net.Http.Headers; + using System.Collections.Generic; + using System.Text.RegularExpressions; + using Newtonsoft.Json; + using NodaTime; + using System.Collections; + + public class Utilities + { + public static string SerializeJSON(object obj) + { + return JsonConvert.SerializeObject( + obj, + new JsonSerializerSettings() + { + NullValueHandling = NullValueHandling.Ignore, + Converters = new JsonConverter[] + { + new IsoDateTimeSerializer(), + new EnumSerializer() + } + } + ); + } + + public static bool IsDictionary(object? o) + { + if (o == null) + return false; + return o is IDictionary + && o.GetType().IsGenericType + && o.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(Dictionary<,>)); + } + + public static bool IsList(object? o) + { + if (o == null) + return false; + return o is IList + && o.GetType().IsGenericType + && o.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List<>)); + } + + public static bool IsClass(object? o) + { + if (o == null) + return false; + return o.GetType().IsClass && (o.GetType().FullName ?? "").StartsWith("PlexAPI.Models"); + } + + // TODO: code review polyfilled for IsAssignableTo + public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) + { + return potentialDescendant.IsSubclassOf(potentialBase) + || potentialDescendant == potentialBase; + } + + public static bool IsString(object? obj) + { + if (obj != null) + { + var type = obj.GetType(); + return IsSameOrSubclass(type, typeof(string)); + } + else + { + return false; + } + } + + public static bool IsPrimitive(object obj) => obj != null && obj.GetType().IsPrimitive; + + public static bool IsEnum(object obj) => obj != null && obj.GetType().IsEnum; + + public static bool IsDate(object obj) => + obj != null && (obj.GetType() == typeof(DateTime) || obj.GetType() == typeof(LocalDate)); + + private static string StripSurroundingQuotes(string input) + { + Regex surroundingQuotesRegex = new Regex("^\"(.*)\"$"); + var match = surroundingQuotesRegex.Match(input); + if(match.Groups.Values.Count() == 2) + { + return match.Groups.Values.Last().ToString(); + } + return input; + } + + public static string ValueToString(object? value) + { + if (value == null) + { + return ""; + } + + if (value.GetType() == typeof(DateTime)) + { + return ((DateTime)value) + .ToUniversalTime() + .ToString("o", System.Globalization.CultureInfo.InvariantCulture); + } + else if (value.GetType() == typeof(LocalDate)) + { + return ((LocalDate)value) + .ToDateTimeUnspecified() + .ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); + } + else if (value.GetType() == typeof(bool)) + { + return (bool)value ? "true" : "false"; + } + else if (IsEnum(value)) + { + var method = Type.GetType(value.GetType().FullName + "Extension") + ?.GetMethod("Value"); + if (method == null) + { + return Convert.ChangeType(value, Enum.GetUnderlyingType(value.GetType()))?.ToString() ?? ""; + } + return (string)(method.Invoke(null, new[] { value }) ?? ""); + } + + return value.ToString() ?? ""; + } + + public static string ToString(object? obj) + { + if (obj == null) + { + return ""; + } + + if (IsString(obj)) + { + return obj.ToString() ?? ""; + } + + if (IsPrimitive(obj)) + { + return JsonConvert.SerializeObject(obj); + } + + if (IsEnum(obj)) + { + var attributes = obj.GetType().GetMember(obj.ToString() ?? "").First().CustomAttributes; + if (attributes.Count() == 0) + { + return JsonConvert.SerializeObject(obj); + } + + var args = attributes.First().ConstructorArguments; + if (args.Count() == 0) + { + return JsonConvert.SerializeObject(obj); + } + return StripSurroundingQuotes(args.First().ToString()); + } + + if (IsDate(obj)) + { + return StripSurroundingQuotes(JsonConvert.SerializeObject(obj, new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new IsoDateTimeSerializer(), new EnumSerializer() }})); + } + return JsonConvert.SerializeObject(obj, new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new IsoDateTimeSerializer(), new EnumSerializer() }}); + } + + public static bool IsContentTypeMatch(string expected, string? actual) + { + if (actual == null) + { + return false; + } + + if (expected == actual || expected == "*" || expected == "*/*") + { + return true; + } + + try + { + var mediaType = MediaTypeHeaderValue.Parse(actual).MediaType ?? ""; + + if (expected == mediaType) + { + return true; + } + + var parts = mediaType.Split('/'); + if (parts.Length == 2) + { + if (parts[0] + "/*" == expected || "*/" + parts[1] == expected) + { + return true; + } + } + } + catch (Exception) { } + + return false; + } + + public static string PrefixBearer(string authHeaderValue) + { + if (authHeaderValue.StartsWith("bearer ", StringComparison.InvariantCultureIgnoreCase)) + { + return authHeaderValue; + } + + return $"Bearer {authHeaderValue}"; + } + public static string RemoveSuffix(string inputString, string suffix) + { + if (!String.IsNullOrEmpty(suffix) && inputString.EndsWith(suffix)) + { + return inputString.Remove(inputString.Length - suffix.Length, suffix.Length); + } + return inputString; + } + public static string TemplateUrl(string template, Dictionary paramDict) + { + foreach(KeyValuePair entry in paramDict) + { + template = template.Replace('{' + entry.Key + '}', entry.Value); + } + return template; + } + } +} \ No newline at end of file diff --git a/PlexAPI/Video.cs b/PlexAPI/Video.cs new file mode 100644 index 0000000..ca76352 --- /dev/null +++ b/PlexAPI/Video.cs @@ -0,0 +1,158 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace PlexAPI +{ + using Newtonsoft.Json; + using PlexAPI.Models.Requests; + using PlexAPI.Utils; + using System.Net.Http.Headers; + using System.Net.Http; + using System.Threading.Tasks; + using System; + + /// + /// API Calls that perform operations with Plex Media Server Videos
+ /// + /// + /// + /// + ///
+ public interface IVideo + { + + /// + /// Start Universal Transcode + /// + /// + /// Begin a Universal Transcode Session + /// + /// + Task StartUniversalTranscodeAsync(StartUniversalTranscodeRequest? request = null); + + /// + /// Get the timeline for a media item + /// + /// + /// Get the timeline for a media item + /// + /// + Task GetTimelineAsync(GetTimelineRequest? request = null); + } + + /// + /// API Calls that perform operations with Plex Media Server Videos
+ /// + /// + /// + /// + ///
+ public class Video: IVideo + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.1.0"; + private const string _sdkGenVersion = "2.223.3"; + private const string _openapiDocVersion = "0.0.3"; + private const string _userAgent = "speakeasy-sdk/csharp 0.1.0 2.223.3 0.0.3 Plex-API"; + private string _serverUrl = ""; + private ISpeakeasyHttpClient _defaultClient; + private ISpeakeasyHttpClient _securityClient; + + public Video(ISpeakeasyHttpClient defaultClient, ISpeakeasyHttpClient securityClient, string serverUrl, SDKConfig config) + { + _defaultClient = defaultClient; + _securityClient = securityClient; + _serverUrl = serverUrl; + SDKConfiguration = config; + } + + + public async Task StartUniversalTranscodeAsync(StartUniversalTranscodeRequest? request = null) + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/video/:/transcode/universal/start.mpd", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new StartUniversalTranscodeResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + + public async Task GetTimelineAsync(GetTimelineRequest? request = null) + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerDetails(); + var urlString = URLBuilder.Build(baseUrl, "/:/timeline", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", _userAgent); + + + var client = _securityClient; + + var httpResponse = await client.SendAsync(httpRequest); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + + var response = new GetTimelineResponse + { + StatusCode = (int)httpResponse.StatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + + if((response.StatusCode == 200) || (response.StatusCode == 400)) + { + + return response; + } + if((response.StatusCode == 401)) + { + if(Utilities.IsContentTypeMatch("application/json",response.ContentType)) + { + response.Object = JsonConvert.DeserializeObject(await httpResponse.Content.ReadAsStringAsync(), new JsonSerializerSettings(){ NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new FlexibleObjectDeserializer(), new EnumSerializer() }}); + } + + return response; + } + return response; + } + + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..df05a62 --- /dev/null +++ b/README.md @@ -0,0 +1,193 @@ +# Plex-API + +
+ + + + +
+ + +## 🏗 **Welcome to your new SDK!** 🏗 + +It has been generated successfully based on your OpenAPI spec. However, it is not yet ready for production use. Here are some next steps: +- [ ] 🛠 Make your SDK feel handcrafted by [customizing it](https://www.speakeasyapi.dev/docs/customize-sdks) +- [ ] ♻️ Refine your SDK quickly by iterating locally with the [Speakeasy CLI](https://github.com/speakeasy-api/speakeasy) +- [ ] 🎁 Publish your SDK to package managers by [configuring automatic publishing](https://www.speakeasyapi.dev/docs/productionize-sdks/publish-sdks) +- [ ] ✨ When ready to productionize, delete this section from the README + + +## SDK Installation + +### Nuget + +```bash +dotnet add package Plex-API +``` + + + +## SDK Example Usage + +### Example + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetServerCapabilitiesAsync(); + +// handle response +``` + + + +## Available Resources and Operations + +### [Server](docs/sdks/server/README.md) + +* [GetServerCapabilities](docs/sdks/server/README.md#getservercapabilities) - Server Capabilities +* [GetServerPreferences](docs/sdks/server/README.md#getserverpreferences) - Get Server Preferences +* [GetAvailableClients](docs/sdks/server/README.md#getavailableclients) - Get Available Clients +* [GetDevices](docs/sdks/server/README.md#getdevices) - Get Devices +* [GetServerIdentity](docs/sdks/server/README.md#getserveridentity) - Get Server Identity +* [GetMyPlexAccount](docs/sdks/server/README.md#getmyplexaccount) - Get MyPlex Account +* [GetResizedPhoto](docs/sdks/server/README.md#getresizedphoto) - Get a Resized Photo +* [GetServerList](docs/sdks/server/README.md#getserverlist) - Get Server List + +### [Media](docs/sdks/media/README.md) + +* [MarkPlayed](docs/sdks/media/README.md#markplayed) - Mark Media Played +* [MarkUnplayed](docs/sdks/media/README.md#markunplayed) - Mark Media Unplayed +* [UpdatePlayProgress](docs/sdks/media/README.md#updateplayprogress) - Update Media Play Progress + +### [Activities](docs/sdks/activities/README.md) + +* [GetServerActivities](docs/sdks/activities/README.md#getserveractivities) - Get Server Activities +* [CancelServerActivities](docs/sdks/activities/README.md#cancelserveractivities) - Cancel Server Activities + +### [Butler](docs/sdks/butler/README.md) + +* [GetButlerTasks](docs/sdks/butler/README.md#getbutlertasks) - Get Butler tasks +* [StartAllTasks](docs/sdks/butler/README.md#startalltasks) - Start all Butler tasks +* [StopAllTasks](docs/sdks/butler/README.md#stopalltasks) - Stop all Butler tasks +* [StartTask](docs/sdks/butler/README.md#starttask) - Start a single Butler task +* [StopTask](docs/sdks/butler/README.md#stoptask) - Stop a single Butler task + +### [Hubs](docs/sdks/hubs/README.md) + +* [GetGlobalHubs](docs/sdks/hubs/README.md#getglobalhubs) - Get Global Hubs +* [GetLibraryHubs](docs/sdks/hubs/README.md#getlibraryhubs) - Get library specific hubs + +### [Search](docs/sdks/search/README.md) + +* [PerformSearch](docs/sdks/search/README.md#performsearch) - Perform a search +* [PerformVoiceSearch](docs/sdks/search/README.md#performvoicesearch) - Perform a voice search +* [GetSearchResults](docs/sdks/search/README.md#getsearchresults) - Get Search Results + +### [Library](docs/sdks/library/README.md) + +* [GetFileHash](docs/sdks/library/README.md#getfilehash) - Get Hash Value +* [GetRecentlyAdded](docs/sdks/library/README.md#getrecentlyadded) - Get Recently Added +* [GetLibraries](docs/sdks/library/README.md#getlibraries) - Get All Libraries +* [GetLibrary](docs/sdks/library/README.md#getlibrary) - Get Library Details +* [DeleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section +* [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items +* [RefreshLibrary](docs/sdks/library/README.md#refreshlibrary) - Refresh Library +* [GetLatestLibraryItems](docs/sdks/library/README.md#getlatestlibraryitems) - Get Latest Library Items +* [GetCommonLibraryItems](docs/sdks/library/README.md#getcommonlibraryitems) - Get Common Library Items +* [GetMetadata](docs/sdks/library/README.md#getmetadata) - Get Items Metadata +* [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children +* [GetOnDeck](docs/sdks/library/README.md#getondeck) - Get On Deck + +### [Log](docs/sdks/log/README.md) + +* [LogLine](docs/sdks/log/README.md#logline) - Logging a single line message. +* [LogMultiLine](docs/sdks/log/README.md#logmultiline) - Logging a multi-line message +* [EnablePaperTrail](docs/sdks/log/README.md#enablepapertrail) - Enabling Papertrail + +### [Playlists](docs/sdks/playlists/README.md) + +* [CreatePlaylist](docs/sdks/playlists/README.md#createplaylist) - Create a Playlist +* [GetPlaylists](docs/sdks/playlists/README.md#getplaylists) - Get All Playlists +* [GetPlaylist](docs/sdks/playlists/README.md#getplaylist) - Retrieve Playlist +* [DeletePlaylist](docs/sdks/playlists/README.md#deleteplaylist) - Deletes a Playlist +* [UpdatePlaylist](docs/sdks/playlists/README.md#updateplaylist) - Update a Playlist +* [GetPlaylistContents](docs/sdks/playlists/README.md#getplaylistcontents) - Retrieve Playlist Contents +* [ClearPlaylistContents](docs/sdks/playlists/README.md#clearplaylistcontents) - Delete Playlist Contents +* [AddPlaylistContents](docs/sdks/playlists/README.md#addplaylistcontents) - Adding to a Playlist +* [UploadPlaylist](docs/sdks/playlists/README.md#uploadplaylist) - Upload Playlist + +### [Security](docs/sdks/security/README.md) + +* [GetTransientToken](docs/sdks/security/README.md#gettransienttoken) - Get a Transient Token. +* [GetSourceConnectionInformation](docs/sdks/security/README.md#getsourceconnectioninformation) - Get Source Connection Information + +### [Sessions](docs/sdks/sessions/README.md) + +* [GetSessions](docs/sdks/sessions/README.md#getsessions) - Get Active Sessions +* [GetSessionHistory](docs/sdks/sessions/README.md#getsessionhistory) - Get Session History +* [GetTranscodeSessions](docs/sdks/sessions/README.md#gettranscodesessions) - Get Transcode Sessions +* [StopTranscodeSession](docs/sdks/sessions/README.md#stoptranscodesession) - Stop a Transcode Session + +### [Updater](docs/sdks/updater/README.md) + +* [GetUpdateStatus](docs/sdks/updater/README.md#getupdatestatus) - Querying status of updates +* [CheckForUpdates](docs/sdks/updater/README.md#checkforupdates) - Checking for updates +* [ApplyUpdates](docs/sdks/updater/README.md#applyupdates) - Apply Updates + +### [Video](docs/sdks/video/README.md) + +* [StartUniversalTranscode](docs/sdks/video/README.md#startuniversaltranscode) - Start Universal Transcode +* [GetTimeline](docs/sdks/video/README.md#gettimeline) - Get the timeline for a media item + + + +## Server Selection + +## Server Selection + +### Select Server by Index + +You can override the default server globally by passing a server index to the `serverIndex: number` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: + +| # | Server | Variables | +| - | ------ | --------- | +| 0 | `http://10.10.10.47:32400` | None | +| 1 | `{protocol}://{ip}:{port}` | `protocol` (default is `http`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) | + + + +#### Variables + +Some of the server options above contain variables. If you want to set the values of those variables, the following options are provided for doing so: + * `protocol: ServerProtocol` + * `ip: string` + * `port: string` + +### Override Server URL Per-Client + +The default server can also be overridden globally by passing a URL to the `serverUrl: str` optional parameter when initializing the SDK client instance. For example: + + + + +# Development + +## Maturity + +This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage +to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally +looking for the latest version. + +## Contributions + +While we value open-source contributions to this SDK, this library is generated programmatically. +Feel free to open a PR or a Github issue as a proof of concept and we'll do our best to include it in a future release! + +### SDK Created by [Speakeasy](https://docs.speakeasyapi.dev/docs/using-speakeasy/client-sdks) diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 0000000..e8b3546 --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,9 @@ + + +## 2024-01-01 14:37:17 +### Changes +Based on: +- OpenAPI Doc 0.0.3 +- Speakeasy CLI 1.129.1 (2.223.3) https://github.com/speakeasy-api/speakeasy +### Generated +- [csharp v0.1.0] . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 0000000..fa05bbe --- /dev/null +++ b/USAGE.md @@ -0,0 +1,15 @@ + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetServerCapabilitiesAsync(); + +// handle response +``` + \ No newline at end of file diff --git a/docs/Models/Components/Security.md b/docs/Models/Components/Security.md new file mode 100644 index 0000000..cd7c168 --- /dev/null +++ b/docs/Models/Components/Security.md @@ -0,0 +1,8 @@ +# Security + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `AccessToken` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Activity.md b/docs/Models/Requests/Activity.md new file mode 100644 index 0000000..d71b304 --- /dev/null +++ b/docs/Models/Requests/Activity.md @@ -0,0 +1,15 @@ +# Activity + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Cancellable` | *bool* | :heavy_minus_sign: | N/A | +| `UserID` | *double* | :heavy_minus_sign: | N/A | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Subtitle` | *string* | :heavy_minus_sign: | N/A | +| `Progress` | *double* | :heavy_minus_sign: | N/A | +| `Context` | [Context](../../Models/Requests/Context.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsErrors.md b/docs/Models/Requests/AddPlaylistContentsErrors.md new file mode 100644 index 0000000..7f79d39 --- /dev/null +++ b/docs/Models/Requests/AddPlaylistContentsErrors.md @@ -0,0 +1,10 @@ +# AddPlaylistContentsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsRequest.md b/docs/Models/Requests/AddPlaylistContentsRequest.md new file mode 100644 index 0000000..0ddcf13 --- /dev/null +++ b/docs/Models/Requests/AddPlaylistContentsRequest.md @@ -0,0 +1,10 @@ +# AddPlaylistContentsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | | +| `Uri` | *string* | :heavy_check_mark: | the content URI for the playlist | library://.. | +| `PlayQueueID` | *double* | :heavy_check_mark: | the play queue to add to a playlist | 123 | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsResponse.md b/docs/Models/Requests/AddPlaylistContentsResponse.md new file mode 100644 index 0000000..e8efc15 --- /dev/null +++ b/docs/Models/Requests/AddPlaylistContentsResponse.md @@ -0,0 +1,11 @@ +# AddPlaylistContentsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [AddPlaylistContentsResponseBody](../../Models/Requests/AddPlaylistContentsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsResponseBody.md b/docs/Models/Requests/AddPlaylistContentsResponseBody.md new file mode 100644 index 0000000..d3bd605 --- /dev/null +++ b/docs/Models/Requests/AddPlaylistContentsResponseBody.md @@ -0,0 +1,10 @@ +# AddPlaylistContentsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Errors` | List<[AddPlaylistContentsErrors](../../Models/Requests/AddPlaylistContentsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ApplyUpdatesErrors.md b/docs/Models/Requests/ApplyUpdatesErrors.md new file mode 100644 index 0000000..c6c3a4e --- /dev/null +++ b/docs/Models/Requests/ApplyUpdatesErrors.md @@ -0,0 +1,10 @@ +# ApplyUpdatesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/ApplyUpdatesRequest.md b/docs/Models/Requests/ApplyUpdatesRequest.md new file mode 100644 index 0000000..a0e1593 --- /dev/null +++ b/docs/Models/Requests/ApplyUpdatesRequest.md @@ -0,0 +1,9 @@ +# ApplyUpdatesRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Tonight` | [Tonight](../../Models/Requests/Tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | +| `Skip` | [Skip](../../Models/Requests/Skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. | \ No newline at end of file diff --git a/docs/Models/Requests/ApplyUpdatesResponse.md b/docs/Models/Requests/ApplyUpdatesResponse.md new file mode 100644 index 0000000..2350a62 --- /dev/null +++ b/docs/Models/Requests/ApplyUpdatesResponse.md @@ -0,0 +1,11 @@ +# ApplyUpdatesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [ApplyUpdatesResponseBody](../../Models/Requests/ApplyUpdatesResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/ApplyUpdatesResponseBody.md b/docs/Models/Requests/ApplyUpdatesResponseBody.md new file mode 100644 index 0000000..91d905a --- /dev/null +++ b/docs/Models/Requests/ApplyUpdatesResponseBody.md @@ -0,0 +1,10 @@ +# ApplyUpdatesResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `Errors` | List<[ApplyUpdatesErrors](../../Models/Requests/ApplyUpdatesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ButlerTask.md b/docs/Models/Requests/ButlerTask.md new file mode 100644 index 0000000..522b2a0 --- /dev/null +++ b/docs/Models/Requests/ButlerTask.md @@ -0,0 +1,13 @@ +# ButlerTask + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `Name` | *string* | :heavy_minus_sign: | N/A | BackupDatabase | +| `Interval` | *double* | :heavy_minus_sign: | N/A | 3 | +| `ScheduleRandomized` | *bool* | :heavy_minus_sign: | N/A | | +| `Enabled` | *bool* | :heavy_minus_sign: | N/A | | +| `Title` | *string* | :heavy_minus_sign: | N/A | Backup Database | +| `Description` | *string* | :heavy_minus_sign: | N/A | Create a backup copy of the server's database in the configured backup directory | \ No newline at end of file diff --git a/docs/Models/Requests/ButlerTasks.md b/docs/Models/Requests/ButlerTasks.md new file mode 100644 index 0000000..3865cd8 --- /dev/null +++ b/docs/Models/Requests/ButlerTasks.md @@ -0,0 +1,8 @@ +# ButlerTasks + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `ButlerTask` | List<[ButlerTask](../../Models/Requests/ButlerTask.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CancelServerActivitiesErrors.md b/docs/Models/Requests/CancelServerActivitiesErrors.md new file mode 100644 index 0000000..16e1244 --- /dev/null +++ b/docs/Models/Requests/CancelServerActivitiesErrors.md @@ -0,0 +1,10 @@ +# CancelServerActivitiesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/CancelServerActivitiesRequest.md b/docs/Models/Requests/CancelServerActivitiesRequest.md new file mode 100644 index 0000000..d4bf7ee --- /dev/null +++ b/docs/Models/Requests/CancelServerActivitiesRequest.md @@ -0,0 +1,8 @@ +# CancelServerActivitiesRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `ActivityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | \ No newline at end of file diff --git a/docs/Models/Requests/CancelServerActivitiesResponse.md b/docs/Models/Requests/CancelServerActivitiesResponse.md new file mode 100644 index 0000000..2ceb02c --- /dev/null +++ b/docs/Models/Requests/CancelServerActivitiesResponse.md @@ -0,0 +1,11 @@ +# CancelServerActivitiesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [CancelServerActivitiesResponseBody](../../Models/Requests/CancelServerActivitiesResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/CancelServerActivitiesResponseBody.md b/docs/Models/Requests/CancelServerActivitiesResponseBody.md new file mode 100644 index 0000000..fba603e --- /dev/null +++ b/docs/Models/Requests/CancelServerActivitiesResponseBody.md @@ -0,0 +1,10 @@ +# CancelServerActivitiesResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `Errors` | List<[CancelServerActivitiesErrors](../../Models/Requests/CancelServerActivitiesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CheckForUpdatesErrors.md b/docs/Models/Requests/CheckForUpdatesErrors.md new file mode 100644 index 0000000..b092af3 --- /dev/null +++ b/docs/Models/Requests/CheckForUpdatesErrors.md @@ -0,0 +1,10 @@ +# CheckForUpdatesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/CheckForUpdatesRequest.md b/docs/Models/Requests/CheckForUpdatesRequest.md new file mode 100644 index 0000000..9b4fa1c --- /dev/null +++ b/docs/Models/Requests/CheckForUpdatesRequest.md @@ -0,0 +1,8 @@ +# CheckForUpdatesRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Download` | [Download](../../Models/Requests/Download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | \ No newline at end of file diff --git a/docs/Models/Requests/CheckForUpdatesResponse.md b/docs/Models/Requests/CheckForUpdatesResponse.md new file mode 100644 index 0000000..553f9bc --- /dev/null +++ b/docs/Models/Requests/CheckForUpdatesResponse.md @@ -0,0 +1,11 @@ +# CheckForUpdatesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [CheckForUpdatesResponseBody](../../Models/Requests/CheckForUpdatesResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/CheckForUpdatesResponseBody.md b/docs/Models/Requests/CheckForUpdatesResponseBody.md new file mode 100644 index 0000000..e1a3a70 --- /dev/null +++ b/docs/Models/Requests/CheckForUpdatesResponseBody.md @@ -0,0 +1,10 @@ +# CheckForUpdatesResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Errors` | List<[CheckForUpdatesErrors](../../Models/Requests/CheckForUpdatesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistContentsErrors.md b/docs/Models/Requests/ClearPlaylistContentsErrors.md new file mode 100644 index 0000000..40fce10 --- /dev/null +++ b/docs/Models/Requests/ClearPlaylistContentsErrors.md @@ -0,0 +1,10 @@ +# ClearPlaylistContentsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistContentsRequest.md b/docs/Models/Requests/ClearPlaylistContentsRequest.md new file mode 100644 index 0000000..442096e --- /dev/null +++ b/docs/Models/Requests/ClearPlaylistContentsRequest.md @@ -0,0 +1,8 @@ +# ClearPlaylistContentsRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistContentsResponse.md b/docs/Models/Requests/ClearPlaylistContentsResponse.md new file mode 100644 index 0000000..6614a1f --- /dev/null +++ b/docs/Models/Requests/ClearPlaylistContentsResponse.md @@ -0,0 +1,11 @@ +# ClearPlaylistContentsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [ClearPlaylistContentsResponseBody](../../Models/Requests/ClearPlaylistContentsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistContentsResponseBody.md b/docs/Models/Requests/ClearPlaylistContentsResponseBody.md new file mode 100644 index 0000000..baf6b4c --- /dev/null +++ b/docs/Models/Requests/ClearPlaylistContentsResponseBody.md @@ -0,0 +1,10 @@ +# ClearPlaylistContentsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Errors` | List<[ClearPlaylistContentsErrors](../../Models/Requests/ClearPlaylistContentsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Context.md b/docs/Models/Requests/Context.md new file mode 100644 index 0000000..f1df3b5 --- /dev/null +++ b/docs/Models/Requests/Context.md @@ -0,0 +1,8 @@ +# Context + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `LibrarySectionID` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Country.md b/docs/Models/Requests/Country.md new file mode 100644 index 0000000..0a6e787 --- /dev/null +++ b/docs/Models/Requests/Country.md @@ -0,0 +1,8 @@ +# Country + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistErrors.md b/docs/Models/Requests/CreatePlaylistErrors.md new file mode 100644 index 0000000..2043d70 --- /dev/null +++ b/docs/Models/Requests/CreatePlaylistErrors.md @@ -0,0 +1,10 @@ +# CreatePlaylistErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistRequest.md b/docs/Models/Requests/CreatePlaylistRequest.md new file mode 100644 index 0000000..e37bf58 --- /dev/null +++ b/docs/Models/Requests/CreatePlaylistRequest.md @@ -0,0 +1,12 @@ +# CreatePlaylistRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `Title` | *string* | :heavy_check_mark: | name of the playlist | +| `Type` | [Type](../../Models/Requests/Type.md) | :heavy_check_mark: | type of playlist to create | +| `Smart` | [Smart](../../Models/Requests/Smart.md) | :heavy_check_mark: | whether the playlist is smart or not | +| `Uri` | *string* | :heavy_minus_sign: | the content URI for the playlist | +| `PlayQueueID` | *double* | :heavy_minus_sign: | the play queue to copy to a playlist | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistResponse.md b/docs/Models/Requests/CreatePlaylistResponse.md new file mode 100644 index 0000000..856cf87 --- /dev/null +++ b/docs/Models/Requests/CreatePlaylistResponse.md @@ -0,0 +1,11 @@ +# CreatePlaylistResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [CreatePlaylistResponseBody](../../Models/Requests/CreatePlaylistResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistResponseBody.md b/docs/Models/Requests/CreatePlaylistResponseBody.md new file mode 100644 index 0000000..1f71a02 --- /dev/null +++ b/docs/Models/Requests/CreatePlaylistResponseBody.md @@ -0,0 +1,10 @@ +# CreatePlaylistResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[CreatePlaylistErrors](../../Models/Requests/CreatePlaylistErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibraryErrors.md b/docs/Models/Requests/DeleteLibraryErrors.md new file mode 100644 index 0000000..cf87649 --- /dev/null +++ b/docs/Models/Requests/DeleteLibraryErrors.md @@ -0,0 +1,10 @@ +# DeleteLibraryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibraryRequest.md b/docs/Models/Requests/DeleteLibraryRequest.md new file mode 100644 index 0000000..2bbb140 --- /dev/null +++ b/docs/Models/Requests/DeleteLibraryRequest.md @@ -0,0 +1,8 @@ +# DeleteLibraryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | 1000 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibraryResponse.md b/docs/Models/Requests/DeleteLibraryResponse.md new file mode 100644 index 0000000..ae36175 --- /dev/null +++ b/docs/Models/Requests/DeleteLibraryResponse.md @@ -0,0 +1,11 @@ +# DeleteLibraryResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [DeleteLibraryResponseBody](../../Models/Requests/DeleteLibraryResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibraryResponseBody.md b/docs/Models/Requests/DeleteLibraryResponseBody.md new file mode 100644 index 0000000..d496b57 --- /dev/null +++ b/docs/Models/Requests/DeleteLibraryResponseBody.md @@ -0,0 +1,10 @@ +# DeleteLibraryResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Errors` | List<[DeleteLibraryErrors](../../Models/Requests/DeleteLibraryErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistErrors.md b/docs/Models/Requests/DeletePlaylistErrors.md new file mode 100644 index 0000000..1dbb6de --- /dev/null +++ b/docs/Models/Requests/DeletePlaylistErrors.md @@ -0,0 +1,10 @@ +# DeletePlaylistErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistRequest.md b/docs/Models/Requests/DeletePlaylistRequest.md new file mode 100644 index 0000000..a825f8e --- /dev/null +++ b/docs/Models/Requests/DeletePlaylistRequest.md @@ -0,0 +1,8 @@ +# DeletePlaylistRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistResponse.md b/docs/Models/Requests/DeletePlaylistResponse.md new file mode 100644 index 0000000..8998b38 --- /dev/null +++ b/docs/Models/Requests/DeletePlaylistResponse.md @@ -0,0 +1,11 @@ +# DeletePlaylistResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [DeletePlaylistResponseBody](../../Models/Requests/DeletePlaylistResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistResponseBody.md b/docs/Models/Requests/DeletePlaylistResponseBody.md new file mode 100644 index 0000000..0ba83df --- /dev/null +++ b/docs/Models/Requests/DeletePlaylistResponseBody.md @@ -0,0 +1,10 @@ +# DeletePlaylistResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[DeletePlaylistErrors](../../Models/Requests/DeletePlaylistErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Device.md b/docs/Models/Requests/Device.md new file mode 100644 index 0000000..838a927 --- /dev/null +++ b/docs/Models/Requests/Device.md @@ -0,0 +1,12 @@ +# Device + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Id` | *double* | :heavy_minus_sign: | N/A | 1 | +| `Name` | *string* | :heavy_minus_sign: | N/A | iPhone | +| `Platform` | *string* | :heavy_minus_sign: | N/A | iOS | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | N/A | | +| `CreatedAt` | *double* | :heavy_minus_sign: | N/A | 1654131230 | \ No newline at end of file diff --git a/docs/Models/Requests/Director.md b/docs/Models/Requests/Director.md new file mode 100644 index 0000000..ef8aa90 --- /dev/null +++ b/docs/Models/Requests/Director.md @@ -0,0 +1,8 @@ +# Director + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Peyton Reed | \ No newline at end of file diff --git a/docs/Models/Requests/Directory.md b/docs/Models/Requests/Directory.md new file mode 100644 index 0000000..972edf0 --- /dev/null +++ b/docs/Models/Requests/Directory.md @@ -0,0 +1,10 @@ +# Directory + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Count` | *double* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Title` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Download.md b/docs/Models/Requests/Download.md new file mode 100644 index 0000000..a29a21f --- /dev/null +++ b/docs/Models/Requests/Download.md @@ -0,0 +1,11 @@ +# Download + +Indicate that you want to start download any updates found. + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/EnablePaperTrailErrors.md b/docs/Models/Requests/EnablePaperTrailErrors.md new file mode 100644 index 0000000..bfbce9d --- /dev/null +++ b/docs/Models/Requests/EnablePaperTrailErrors.md @@ -0,0 +1,10 @@ +# EnablePaperTrailErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/EnablePaperTrailResponse.md b/docs/Models/Requests/EnablePaperTrailResponse.md new file mode 100644 index 0000000..a2cbbbb --- /dev/null +++ b/docs/Models/Requests/EnablePaperTrailResponse.md @@ -0,0 +1,11 @@ +# EnablePaperTrailResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [EnablePaperTrailResponseBody](../../Models/Requests/EnablePaperTrailResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/EnablePaperTrailResponseBody.md b/docs/Models/Requests/EnablePaperTrailResponseBody.md new file mode 100644 index 0000000..480140f --- /dev/null +++ b/docs/Models/Requests/EnablePaperTrailResponseBody.md @@ -0,0 +1,10 @@ +# EnablePaperTrailResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `Errors` | List<[EnablePaperTrailErrors](../../Models/Requests/EnablePaperTrailErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Errors.md b/docs/Models/Requests/Errors.md new file mode 100644 index 0000000..0e0aca1 --- /dev/null +++ b/docs/Models/Requests/Errors.md @@ -0,0 +1,10 @@ +# Errors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/Force.md b/docs/Models/Requests/Force.md new file mode 100644 index 0000000..1cdfc16 --- /dev/null +++ b/docs/Models/Requests/Force.md @@ -0,0 +1,13 @@ +# Force + +force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. +The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. + + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Genre.md b/docs/Models/Requests/Genre.md new file mode 100644 index 0000000..2915a5e --- /dev/null +++ b/docs/Models/Requests/Genre.md @@ -0,0 +1,8 @@ +# Genre + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Comedy | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableClientsErrors.md b/docs/Models/Requests/GetAvailableClientsErrors.md new file mode 100644 index 0000000..551594c --- /dev/null +++ b/docs/Models/Requests/GetAvailableClientsErrors.md @@ -0,0 +1,10 @@ +# GetAvailableClientsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableClientsMediaContainer.md b/docs/Models/Requests/GetAvailableClientsMediaContainer.md new file mode 100644 index 0000000..cdabb42 --- /dev/null +++ b/docs/Models/Requests/GetAvailableClientsMediaContainer.md @@ -0,0 +1,9 @@ +# GetAvailableClientsMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 1 | +| `Server` | List<[Models.Requests.Server](../../Models/Requests/Server.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableClientsResponse.md b/docs/Models/Requests/GetAvailableClientsResponse.md new file mode 100644 index 0000000..43dbf24 --- /dev/null +++ b/docs/Models/Requests/GetAvailableClientsResponse.md @@ -0,0 +1,12 @@ +# GetAvailableClientsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `ResponseBodies` | List<[ResponseBody](../../Models/Requests/ResponseBody.md)> | :heavy_minus_sign: | Available Clients | +| `Object` | [GetAvailableClientsResponseBody](../../Models/Requests/GetAvailableClientsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableClientsResponseBody.md b/docs/Models/Requests/GetAvailableClientsResponseBody.md new file mode 100644 index 0000000..daca51c --- /dev/null +++ b/docs/Models/Requests/GetAvailableClientsResponseBody.md @@ -0,0 +1,10 @@ +# GetAvailableClientsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Errors` | List<[GetAvailableClientsErrors](../../Models/Requests/GetAvailableClientsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetButlerTasksButlerResponseBody.md b/docs/Models/Requests/GetButlerTasksButlerResponseBody.md new file mode 100644 index 0000000..c5ab4d4 --- /dev/null +++ b/docs/Models/Requests/GetButlerTasksButlerResponseBody.md @@ -0,0 +1,10 @@ +# GetButlerTasksButlerResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[GetButlerTasksErrors](../../Models/Requests/GetButlerTasksErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetButlerTasksErrors.md b/docs/Models/Requests/GetButlerTasksErrors.md new file mode 100644 index 0000000..4e866ee --- /dev/null +++ b/docs/Models/Requests/GetButlerTasksErrors.md @@ -0,0 +1,10 @@ +# GetButlerTasksErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetButlerTasksResponse.md b/docs/Models/Requests/GetButlerTasksResponse.md new file mode 100644 index 0000000..1b44159 --- /dev/null +++ b/docs/Models/Requests/GetButlerTasksResponse.md @@ -0,0 +1,12 @@ +# GetButlerTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetButlerTasksResponseBody](../../Models/Requests/GetButlerTasksResponseBody.md) | :heavy_minus_sign: | All butler tasks | +| `FourHundredAndOneApplicationJsonObject` | [GetButlerTasksButlerResponseBody](../../Models/Requests/GetButlerTasksButlerResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetButlerTasksResponseBody.md b/docs/Models/Requests/GetButlerTasksResponseBody.md new file mode 100644 index 0000000..09641b3 --- /dev/null +++ b/docs/Models/Requests/GetButlerTasksResponseBody.md @@ -0,0 +1,10 @@ +# GetButlerTasksResponseBody + +All butler tasks + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `ButlerTasks` | [ButlerTasks](../../Models/Requests/ButlerTasks.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCommonLibraryItemsErrors.md b/docs/Models/Requests/GetCommonLibraryItemsErrors.md new file mode 100644 index 0000000..ee9c402 --- /dev/null +++ b/docs/Models/Requests/GetCommonLibraryItemsErrors.md @@ -0,0 +1,10 @@ +# GetCommonLibraryItemsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetCommonLibraryItemsRequest.md b/docs/Models/Requests/GetCommonLibraryItemsRequest.md new file mode 100644 index 0000000..bbb6381 --- /dev/null +++ b/docs/Models/Requests/GetCommonLibraryItemsRequest.md @@ -0,0 +1,10 @@ +# GetCommonLibraryItemsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Type` | *double* | :heavy_check_mark: | item type | +| `Filter` | *string* | :heavy_minus_sign: | the filter parameter | \ No newline at end of file diff --git a/docs/Models/Requests/GetCommonLibraryItemsResponse.md b/docs/Models/Requests/GetCommonLibraryItemsResponse.md new file mode 100644 index 0000000..82638f5 --- /dev/null +++ b/docs/Models/Requests/GetCommonLibraryItemsResponse.md @@ -0,0 +1,11 @@ +# GetCommonLibraryItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetCommonLibraryItemsResponseBody](../../Models/Requests/GetCommonLibraryItemsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetCommonLibraryItemsResponseBody.md b/docs/Models/Requests/GetCommonLibraryItemsResponseBody.md new file mode 100644 index 0000000..34a40ec --- /dev/null +++ b/docs/Models/Requests/GetCommonLibraryItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetCommonLibraryItemsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Errors` | List<[GetCommonLibraryItemsErrors](../../Models/Requests/GetCommonLibraryItemsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesErrors.md b/docs/Models/Requests/GetDevicesErrors.md new file mode 100644 index 0000000..03e6511 --- /dev/null +++ b/docs/Models/Requests/GetDevicesErrors.md @@ -0,0 +1,10 @@ +# GetDevicesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesMediaContainer.md b/docs/Models/Requests/GetDevicesMediaContainer.md new file mode 100644 index 0000000..34ea65e --- /dev/null +++ b/docs/Models/Requests/GetDevicesMediaContainer.md @@ -0,0 +1,10 @@ +# GetDevicesMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 151 | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.system.devices | +| `Device` | List<[Device](../../Models/Requests/Device.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesResponse.md b/docs/Models/Requests/GetDevicesResponse.md new file mode 100644 index 0000000..06b063e --- /dev/null +++ b/docs/Models/Requests/GetDevicesResponse.md @@ -0,0 +1,12 @@ +# GetDevicesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetDevicesResponseBody](../../Models/Requests/GetDevicesResponseBody.md) | :heavy_minus_sign: | Devices | +| `FourHundredAndOneApplicationJsonObject` | [GetDevicesServerResponseBody](../../Models/Requests/GetDevicesServerResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesResponseBody.md b/docs/Models/Requests/GetDevicesResponseBody.md new file mode 100644 index 0000000..f84caa0 --- /dev/null +++ b/docs/Models/Requests/GetDevicesResponseBody.md @@ -0,0 +1,10 @@ +# GetDevicesResponseBody + +Devices + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `MediaContainer` | [GetDevicesMediaContainer](../../Models/Requests/GetDevicesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesServerResponseBody.md b/docs/Models/Requests/GetDevicesServerResponseBody.md new file mode 100644 index 0000000..ad2859c --- /dev/null +++ b/docs/Models/Requests/GetDevicesServerResponseBody.md @@ -0,0 +1,10 @@ +# GetDevicesServerResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Errors` | List<[GetDevicesErrors](../../Models/Requests/GetDevicesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileHashErrors.md b/docs/Models/Requests/GetFileHashErrors.md new file mode 100644 index 0000000..3c42ebe --- /dev/null +++ b/docs/Models/Requests/GetFileHashErrors.md @@ -0,0 +1,10 @@ +# GetFileHashErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileHashRequest.md b/docs/Models/Requests/GetFileHashRequest.md new file mode 100644 index 0000000..b1ec341 --- /dev/null +++ b/docs/Models/Requests/GetFileHashRequest.md @@ -0,0 +1,9 @@ +# GetFileHashRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `Url` | *string* | :heavy_check_mark: | This is the path to the local file, must be prefixed by `file://` | file://C:\Image.png&type=13 | +| `Type` | *double* | :heavy_minus_sign: | Item type | | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileHashResponse.md b/docs/Models/Requests/GetFileHashResponse.md new file mode 100644 index 0000000..5c37021 --- /dev/null +++ b/docs/Models/Requests/GetFileHashResponse.md @@ -0,0 +1,11 @@ +# GetFileHashResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetFileHashResponseBody](../../Models/Requests/GetFileHashResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileHashResponseBody.md b/docs/Models/Requests/GetFileHashResponseBody.md new file mode 100644 index 0000000..d41622a --- /dev/null +++ b/docs/Models/Requests/GetFileHashResponseBody.md @@ -0,0 +1,10 @@ +# GetFileHashResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Errors` | List<[GetFileHashErrors](../../Models/Requests/GetFileHashErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsErrors.md b/docs/Models/Requests/GetGlobalHubsErrors.md new file mode 100644 index 0000000..a2ab67f --- /dev/null +++ b/docs/Models/Requests/GetGlobalHubsErrors.md @@ -0,0 +1,10 @@ +# GetGlobalHubsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsRequest.md b/docs/Models/Requests/GetGlobalHubsRequest.md new file mode 100644 index 0000000..2c8afd7 --- /dev/null +++ b/docs/Models/Requests/GetGlobalHubsRequest.md @@ -0,0 +1,9 @@ +# GetGlobalHubsRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Count` | *double* | :heavy_minus_sign: | The number of items to return with each hub. | +| `OnlyTransient` | [OnlyTransient](../../Models/Requests/OnlyTransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsResponse.md b/docs/Models/Requests/GetGlobalHubsResponse.md new file mode 100644 index 0000000..da3fd59 --- /dev/null +++ b/docs/Models/Requests/GetGlobalHubsResponse.md @@ -0,0 +1,11 @@ +# GetGlobalHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetGlobalHubsResponseBody](../../Models/Requests/GetGlobalHubsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsResponseBody.md b/docs/Models/Requests/GetGlobalHubsResponseBody.md new file mode 100644 index 0000000..78e7083 --- /dev/null +++ b/docs/Models/Requests/GetGlobalHubsResponseBody.md @@ -0,0 +1,10 @@ +# GetGlobalHubsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Errors` | List<[GetGlobalHubsErrors](../../Models/Requests/GetGlobalHubsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLatestLibraryItemsErrors.md b/docs/Models/Requests/GetLatestLibraryItemsErrors.md new file mode 100644 index 0000000..607cf16 --- /dev/null +++ b/docs/Models/Requests/GetLatestLibraryItemsErrors.md @@ -0,0 +1,10 @@ +# GetLatestLibraryItemsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLatestLibraryItemsRequest.md b/docs/Models/Requests/GetLatestLibraryItemsRequest.md new file mode 100644 index 0000000..982b390 --- /dev/null +++ b/docs/Models/Requests/GetLatestLibraryItemsRequest.md @@ -0,0 +1,10 @@ +# GetLatestLibraryItemsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Type` | *double* | :heavy_check_mark: | item type | +| `Filter` | *string* | :heavy_minus_sign: | the filter parameter | \ No newline at end of file diff --git a/docs/Models/Requests/GetLatestLibraryItemsResponse.md b/docs/Models/Requests/GetLatestLibraryItemsResponse.md new file mode 100644 index 0000000..52e92e8 --- /dev/null +++ b/docs/Models/Requests/GetLatestLibraryItemsResponse.md @@ -0,0 +1,11 @@ +# GetLatestLibraryItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetLatestLibraryItemsResponseBody](../../Models/Requests/GetLatestLibraryItemsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetLatestLibraryItemsResponseBody.md b/docs/Models/Requests/GetLatestLibraryItemsResponseBody.md new file mode 100644 index 0000000..2d1934e --- /dev/null +++ b/docs/Models/Requests/GetLatestLibraryItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetLatestLibraryItemsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Errors` | List<[GetLatestLibraryItemsErrors](../../Models/Requests/GetLatestLibraryItemsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrariesErrors.md b/docs/Models/Requests/GetLibrariesErrors.md new file mode 100644 index 0000000..11c10d1 --- /dev/null +++ b/docs/Models/Requests/GetLibrariesErrors.md @@ -0,0 +1,10 @@ +# GetLibrariesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrariesResponse.md b/docs/Models/Requests/GetLibrariesResponse.md new file mode 100644 index 0000000..e98d7eb --- /dev/null +++ b/docs/Models/Requests/GetLibrariesResponse.md @@ -0,0 +1,11 @@ +# GetLibrariesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetLibrariesResponseBody](../../Models/Requests/GetLibrariesResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrariesResponseBody.md b/docs/Models/Requests/GetLibrariesResponseBody.md new file mode 100644 index 0000000..f04f547 --- /dev/null +++ b/docs/Models/Requests/GetLibrariesResponseBody.md @@ -0,0 +1,10 @@ +# GetLibrariesResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `Errors` | List<[GetLibrariesErrors](../../Models/Requests/GetLibrariesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryErrors.md b/docs/Models/Requests/GetLibraryErrors.md new file mode 100644 index 0000000..97a7aac --- /dev/null +++ b/docs/Models/Requests/GetLibraryErrors.md @@ -0,0 +1,10 @@ +# GetLibraryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsErrors.md b/docs/Models/Requests/GetLibraryHubsErrors.md new file mode 100644 index 0000000..e31aa20 --- /dev/null +++ b/docs/Models/Requests/GetLibraryHubsErrors.md @@ -0,0 +1,10 @@ +# GetLibraryHubsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsRequest.md b/docs/Models/Requests/GetLibraryHubsRequest.md new file mode 100644 index 0000000..b2aea58 --- /dev/null +++ b/docs/Models/Requests/GetLibraryHubsRequest.md @@ -0,0 +1,10 @@ +# GetLibraryHubsRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Count` | *double* | :heavy_minus_sign: | The number of items to return with each hub. | +| `OnlyTransient` | [QueryParamOnlyTransient](../../Models/Requests/QueryParamOnlyTransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsResponse.md b/docs/Models/Requests/GetLibraryHubsResponse.md new file mode 100644 index 0000000..a83076a --- /dev/null +++ b/docs/Models/Requests/GetLibraryHubsResponse.md @@ -0,0 +1,11 @@ +# GetLibraryHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetLibraryHubsResponseBody](../../Models/Requests/GetLibraryHubsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsResponseBody.md b/docs/Models/Requests/GetLibraryHubsResponseBody.md new file mode 100644 index 0000000..d8bd0b8 --- /dev/null +++ b/docs/Models/Requests/GetLibraryHubsResponseBody.md @@ -0,0 +1,10 @@ +# GetLibraryHubsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[GetLibraryHubsErrors](../../Models/Requests/GetLibraryHubsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsErrors.md b/docs/Models/Requests/GetLibraryItemsErrors.md new file mode 100644 index 0000000..2817f7c --- /dev/null +++ b/docs/Models/Requests/GetLibraryItemsErrors.md @@ -0,0 +1,10 @@ +# GetLibraryItemsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsRequest.md b/docs/Models/Requests/GetLibraryItemsRequest.md new file mode 100644 index 0000000..afdbfcc --- /dev/null +++ b/docs/Models/Requests/GetLibraryItemsRequest.md @@ -0,0 +1,10 @@ +# GetLibraryItemsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Type` | *double* | :heavy_minus_sign: | item type | +| `Filter` | *string* | :heavy_minus_sign: | the filter parameter | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsResponse.md b/docs/Models/Requests/GetLibraryItemsResponse.md new file mode 100644 index 0000000..0946f5e --- /dev/null +++ b/docs/Models/Requests/GetLibraryItemsResponse.md @@ -0,0 +1,11 @@ +# GetLibraryItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetLibraryItemsResponseBody](../../Models/Requests/GetLibraryItemsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsResponseBody.md b/docs/Models/Requests/GetLibraryItemsResponseBody.md new file mode 100644 index 0000000..08285a0 --- /dev/null +++ b/docs/Models/Requests/GetLibraryItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetLibraryItemsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Errors` | List<[GetLibraryItemsErrors](../../Models/Requests/GetLibraryItemsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryRequest.md b/docs/Models/Requests/GetLibraryRequest.md new file mode 100644 index 0000000..5c004f6 --- /dev/null +++ b/docs/Models/Requests/GetLibraryRequest.md @@ -0,0 +1,9 @@ +# GetLibraryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | 1000 | +| `IncludeDetails` | [IncludeDetails](../../Models/Requests/IncludeDetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts).
Only exists for backwards compatibility, media providers other than the server libraries have it on always.
| | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryResponse.md b/docs/Models/Requests/GetLibraryResponse.md new file mode 100644 index 0000000..45fc645 --- /dev/null +++ b/docs/Models/Requests/GetLibraryResponse.md @@ -0,0 +1,11 @@ +# GetLibraryResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetLibraryResponseBody](../../Models/Requests/GetLibraryResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryResponseBody.md b/docs/Models/Requests/GetLibraryResponseBody.md new file mode 100644 index 0000000..80e0bd7 --- /dev/null +++ b/docs/Models/Requests/GetLibraryResponseBody.md @@ -0,0 +1,10 @@ +# GetLibraryResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Errors` | List<[GetLibraryErrors](../../Models/Requests/GetLibraryErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenErrors.md b/docs/Models/Requests/GetMetadataChildrenErrors.md new file mode 100644 index 0000000..3d73fa8 --- /dev/null +++ b/docs/Models/Requests/GetMetadataChildrenErrors.md @@ -0,0 +1,10 @@ +# GetMetadataChildrenErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenRequest.md b/docs/Models/Requests/GetMetadataChildrenRequest.md new file mode 100644 index 0000000..3bc46d9 --- /dev/null +++ b/docs/Models/Requests/GetMetadataChildrenRequest.md @@ -0,0 +1,8 @@ +# GetMetadataChildrenRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `RatingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenResponse.md b/docs/Models/Requests/GetMetadataChildrenResponse.md new file mode 100644 index 0000000..8191502 --- /dev/null +++ b/docs/Models/Requests/GetMetadataChildrenResponse.md @@ -0,0 +1,11 @@ +# GetMetadataChildrenResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetMetadataChildrenResponseBody](../../Models/Requests/GetMetadataChildrenResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenResponseBody.md b/docs/Models/Requests/GetMetadataChildrenResponseBody.md new file mode 100644 index 0000000..916d521 --- /dev/null +++ b/docs/Models/Requests/GetMetadataChildrenResponseBody.md @@ -0,0 +1,10 @@ +# GetMetadataChildrenResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Errors` | List<[GetMetadataChildrenErrors](../../Models/Requests/GetMetadataChildrenErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataErrors.md b/docs/Models/Requests/GetMetadataErrors.md new file mode 100644 index 0000000..f462b5a --- /dev/null +++ b/docs/Models/Requests/GetMetadataErrors.md @@ -0,0 +1,10 @@ +# GetMetadataErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataRequest.md b/docs/Models/Requests/GetMetadataRequest.md new file mode 100644 index 0000000..acfc012 --- /dev/null +++ b/docs/Models/Requests/GetMetadataRequest.md @@ -0,0 +1,8 @@ +# GetMetadataRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `RatingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataResponse.md b/docs/Models/Requests/GetMetadataResponse.md new file mode 100644 index 0000000..34a50bd --- /dev/null +++ b/docs/Models/Requests/GetMetadataResponse.md @@ -0,0 +1,11 @@ +# GetMetadataResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetMetadataResponseBody](../../Models/Requests/GetMetadataResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataResponseBody.md b/docs/Models/Requests/GetMetadataResponseBody.md new file mode 100644 index 0000000..9ef96d7 --- /dev/null +++ b/docs/Models/Requests/GetMetadataResponseBody.md @@ -0,0 +1,10 @@ +# GetMetadataResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Errors` | List<[GetMetadataErrors](../../Models/Requests/GetMetadataErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMyPlexAccountErrors.md b/docs/Models/Requests/GetMyPlexAccountErrors.md new file mode 100644 index 0000000..210c7b4 --- /dev/null +++ b/docs/Models/Requests/GetMyPlexAccountErrors.md @@ -0,0 +1,10 @@ +# GetMyPlexAccountErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMyPlexAccountResponse.md b/docs/Models/Requests/GetMyPlexAccountResponse.md new file mode 100644 index 0000000..983ebae --- /dev/null +++ b/docs/Models/Requests/GetMyPlexAccountResponse.md @@ -0,0 +1,12 @@ +# GetMyPlexAccountResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetMyPlexAccountResponseBody](../../Models/Requests/GetMyPlexAccountResponseBody.md) | :heavy_minus_sign: | MyPlex Account | +| `FourHundredAndOneApplicationJsonObject` | [GetMyPlexAccountServerResponseBody](../../Models/Requests/GetMyPlexAccountServerResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMyPlexAccountResponseBody.md b/docs/Models/Requests/GetMyPlexAccountResponseBody.md new file mode 100644 index 0000000..f10d128 --- /dev/null +++ b/docs/Models/Requests/GetMyPlexAccountResponseBody.md @@ -0,0 +1,10 @@ +# GetMyPlexAccountResponseBody + +MyPlex Account + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `MyPlex` | [MyPlex](../../Models/Requests/MyPlex.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMyPlexAccountServerResponseBody.md b/docs/Models/Requests/GetMyPlexAccountServerResponseBody.md new file mode 100644 index 0000000..03693df --- /dev/null +++ b/docs/Models/Requests/GetMyPlexAccountServerResponseBody.md @@ -0,0 +1,10 @@ +# GetMyPlexAccountServerResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `Errors` | List<[GetMyPlexAccountErrors](../../Models/Requests/GetMyPlexAccountErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckErrors.md b/docs/Models/Requests/GetOnDeckErrors.md new file mode 100644 index 0000000..962ef25 --- /dev/null +++ b/docs/Models/Requests/GetOnDeckErrors.md @@ -0,0 +1,10 @@ +# GetOnDeckErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckLibraryResponseBody.md b/docs/Models/Requests/GetOnDeckLibraryResponseBody.md new file mode 100644 index 0000000..58f74b9 --- /dev/null +++ b/docs/Models/Requests/GetOnDeckLibraryResponseBody.md @@ -0,0 +1,10 @@ +# GetOnDeckLibraryResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `Errors` | List<[GetOnDeckErrors](../../Models/Requests/GetOnDeckErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckMedia.md b/docs/Models/Requests/GetOnDeckMedia.md new file mode 100644 index 0000000..5972293 --- /dev/null +++ b/docs/Models/Requests/GetOnDeckMedia.md @@ -0,0 +1,22 @@ +# GetOnDeckMedia + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 80994 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 420080 | +| `Bitrate` | *double* | :heavy_minus_sign: | N/A | 1046 | +| `Width` | *double* | :heavy_minus_sign: | N/A | 1920 | +| `Height` | *double* | :heavy_minus_sign: | N/A | 1080 | +| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 1.78 | +| `AudioChannels` | *double* | :heavy_minus_sign: | N/A | 2 | +| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | aac | +| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | hevc | +| `VideoResolution` | *string* | :heavy_minus_sign: | N/A | 1080 | +| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | +| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | PAL | +| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | +| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main | +| `Part` | List<[GetOnDeckPart](../../Models/Requests/GetOnDeckPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckMediaContainer.md b/docs/Models/Requests/GetOnDeckMediaContainer.md new file mode 100644 index 0000000..590e1e1 --- /dev/null +++ b/docs/Models/Requests/GetOnDeckMediaContainer.md @@ -0,0 +1,14 @@ +# GetOnDeckMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 16 | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | +| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | +| `MediaTagVersion` | *double* | :heavy_minus_sign: | N/A | 1680021154 | +| `MixedParents` | *bool* | :heavy_minus_sign: | N/A | | +| `Metadata` | List<[GetOnDeckMetadata](../../Models/Requests/GetOnDeckMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckMetadata.md b/docs/Models/Requests/GetOnDeckMetadata.md new file mode 100644 index 0000000..48fe3f4 --- /dev/null +++ b/docs/Models/Requests/GetOnDeckMetadata.md @@ -0,0 +1,43 @@ +# GetOnDeckMetadata + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | +| `LibrarySectionID` | *double* | :heavy_minus_sign: | N/A | 2 | +| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | TV Shows | +| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | N/A | 4bb2521c-8ba9-459b-aaee-8ab8bc35eabd | +| `RatingKey` | *double* | :heavy_minus_sign: | N/A | 49564 | +| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49564 | +| `ParentRatingKey` | *double* | :heavy_minus_sign: | N/A | 49557 | +| `GrandparentRatingKey` | *double* | :heavy_minus_sign: | N/A | 49556 | +| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://episode/5ea7d7402e7ab10042e74d4f | +| `ParentGuid` | *string* | :heavy_minus_sign: | N/A | plex://season/602e754d67f4c8002ce54b3d | +| `GrandparentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c090e705e7a001e6e94d8 | +| `Type` | *string* | :heavy_minus_sign: | N/A | episode | +| `Title` | *string* | :heavy_minus_sign: | N/A | Circus | +| `GrandparentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556 | +| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49557 | +| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2 | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | N/A | Bluey (2018) | +| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Season 2 | +| `ContentRating` | *string* | :heavy_minus_sign: | N/A | TV-Y | +| `Summary` | *string* | :heavy_minus_sign: | N/A | Bluey is the ringmaster in a game of circus with her friends but Hercules wants to play his motorcycle game instead. Luckily Bluey has a solution to keep everyone happy. | +| `Index` | *double* | :heavy_minus_sign: | N/A | 33 | +| `ParentIndex` | *double* | :heavy_minus_sign: | N/A | 2 | +| `LastViewedAt` | *double* | :heavy_minus_sign: | N/A | 1681908352 | +| `Year` | *double* | :heavy_minus_sign: | N/A | 2018 | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49564/thumb/1654258204 | +| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | +| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49557/thumb/1654258204 | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/thumb/1680939546 | +| `GrandparentArt` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/theme/1680939546 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 420080 | +| `OriginallyAvailableAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | N/A | 2020-10-31 00:00:00 +0000 UTC | +| `AddedAt` | *double* | :heavy_minus_sign: | N/A | 1654258196 | +| `UpdatedAt` | *double* | :heavy_minus_sign: | N/A | 1654258204 | +| `Media` | List<[GetOnDeckMedia](../../Models/Requests/GetOnDeckMedia.md)> | :heavy_minus_sign: | N/A | | +| `Guids` | List<[Guids](../../Models/Requests/Guids.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckPart.md b/docs/Models/Requests/GetOnDeckPart.md new file mode 100644 index 0000000..3f72fa5 --- /dev/null +++ b/docs/Models/Requests/GetOnDeckPart.md @@ -0,0 +1,16 @@ +# GetOnDeckPart + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 80994 | +| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/80994/1655007810/file.mkv | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 420080 | +| `File` | *string* | :heavy_minus_sign: | N/A | /tvshows/Bluey (2018)/Bluey (2018) - S02E33 - Circus.mkv | +| `Size` | *double* | :heavy_minus_sign: | N/A | 55148931 | +| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | +| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | +| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main | +| `Stream` | List<[Stream](../../Models/Requests/Stream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckResponse.md b/docs/Models/Requests/GetOnDeckResponse.md new file mode 100644 index 0000000..f8a2f0b --- /dev/null +++ b/docs/Models/Requests/GetOnDeckResponse.md @@ -0,0 +1,12 @@ +# GetOnDeckResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetOnDeckResponseBody](../../Models/Requests/GetOnDeckResponseBody.md) | :heavy_minus_sign: | The on Deck content | +| `FourHundredAndOneApplicationJsonObject` | [GetOnDeckLibraryResponseBody](../../Models/Requests/GetOnDeckLibraryResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckResponseBody.md b/docs/Models/Requests/GetOnDeckResponseBody.md new file mode 100644 index 0000000..6072c4d --- /dev/null +++ b/docs/Models/Requests/GetOnDeckResponseBody.md @@ -0,0 +1,10 @@ +# GetOnDeckResponseBody + +The on Deck content + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `MediaContainer` | [GetOnDeckMediaContainer](../../Models/Requests/GetOnDeckMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsErrors.md b/docs/Models/Requests/GetPlaylistContentsErrors.md new file mode 100644 index 0000000..c43243b --- /dev/null +++ b/docs/Models/Requests/GetPlaylistContentsErrors.md @@ -0,0 +1,10 @@ +# GetPlaylistContentsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsRequest.md b/docs/Models/Requests/GetPlaylistContentsRequest.md new file mode 100644 index 0000000..47d29ae --- /dev/null +++ b/docs/Models/Requests/GetPlaylistContentsRequest.md @@ -0,0 +1,9 @@ +# GetPlaylistContentsRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | +| `Type` | *double* | :heavy_check_mark: | the metadata type of the item to return | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsResponse.md b/docs/Models/Requests/GetPlaylistContentsResponse.md new file mode 100644 index 0000000..6e4fb8c --- /dev/null +++ b/docs/Models/Requests/GetPlaylistContentsResponse.md @@ -0,0 +1,11 @@ +# GetPlaylistContentsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetPlaylistContentsResponseBody](../../Models/Requests/GetPlaylistContentsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsResponseBody.md b/docs/Models/Requests/GetPlaylistContentsResponseBody.md new file mode 100644 index 0000000..f8737bb --- /dev/null +++ b/docs/Models/Requests/GetPlaylistContentsResponseBody.md @@ -0,0 +1,10 @@ +# GetPlaylistContentsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Errors` | List<[GetPlaylistContentsErrors](../../Models/Requests/GetPlaylistContentsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistErrors.md b/docs/Models/Requests/GetPlaylistErrors.md new file mode 100644 index 0000000..f7095f0 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistErrors.md @@ -0,0 +1,10 @@ +# GetPlaylistErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistRequest.md b/docs/Models/Requests/GetPlaylistRequest.md new file mode 100644 index 0000000..9fd2ac4 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistRequest.md @@ -0,0 +1,8 @@ +# GetPlaylistRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistResponse.md b/docs/Models/Requests/GetPlaylistResponse.md new file mode 100644 index 0000000..2c000f4 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistResponse.md @@ -0,0 +1,11 @@ +# GetPlaylistResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetPlaylistResponseBody](../../Models/Requests/GetPlaylistResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistResponseBody.md b/docs/Models/Requests/GetPlaylistResponseBody.md new file mode 100644 index 0000000..151b21a --- /dev/null +++ b/docs/Models/Requests/GetPlaylistResponseBody.md @@ -0,0 +1,10 @@ +# GetPlaylistResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Errors` | List<[GetPlaylistErrors](../../Models/Requests/GetPlaylistErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsErrors.md b/docs/Models/Requests/GetPlaylistsErrors.md new file mode 100644 index 0000000..8930209 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistsErrors.md @@ -0,0 +1,10 @@ +# GetPlaylistsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsRequest.md b/docs/Models/Requests/GetPlaylistsRequest.md new file mode 100644 index 0000000..0053cfb --- /dev/null +++ b/docs/Models/Requests/GetPlaylistsRequest.md @@ -0,0 +1,9 @@ +# GetPlaylistsRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `PlaylistType` | [PlaylistType](../../Models/Requests/PlaylistType.md) | :heavy_minus_sign: | limit to a type of playlist. | +| `Smart` | [QueryParamSmart](../../Models/Requests/QueryParamSmart.md) | :heavy_minus_sign: | type of playlists to return (default is all). | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsResponse.md b/docs/Models/Requests/GetPlaylistsResponse.md new file mode 100644 index 0000000..493e4dc --- /dev/null +++ b/docs/Models/Requests/GetPlaylistsResponse.md @@ -0,0 +1,11 @@ +# GetPlaylistsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetPlaylistsResponseBody](../../Models/Requests/GetPlaylistsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsResponseBody.md b/docs/Models/Requests/GetPlaylistsResponseBody.md new file mode 100644 index 0000000..fd19ad1 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistsResponseBody.md @@ -0,0 +1,10 @@ +# GetPlaylistsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `Errors` | List<[GetPlaylistsErrors](../../Models/Requests/GetPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedErrors.md b/docs/Models/Requests/GetRecentlyAddedErrors.md new file mode 100644 index 0000000..4714e25 --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedErrors.md @@ -0,0 +1,10 @@ +# GetRecentlyAddedErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md b/docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md new file mode 100644 index 0000000..c2b6eae --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md @@ -0,0 +1,10 @@ +# GetRecentlyAddedLibraryResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `Errors` | List<[GetRecentlyAddedErrors](../../Models/Requests/GetRecentlyAddedErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedMediaContainer.md b/docs/Models/Requests/GetRecentlyAddedMediaContainer.md new file mode 100644 index 0000000..13c35e0 --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedMediaContainer.md @@ -0,0 +1,14 @@ +# GetRecentlyAddedMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 50 | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | +| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | +| `MediaTagVersion` | *double* | :heavy_minus_sign: | N/A | 1680021154 | +| `MixedParents` | *bool* | :heavy_minus_sign: | N/A | | +| `Metadata` | List<[Metadata](../../Models/Requests/Metadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedResponse.md b/docs/Models/Requests/GetRecentlyAddedResponse.md new file mode 100644 index 0000000..025a93f --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedResponse.md @@ -0,0 +1,12 @@ +# GetRecentlyAddedResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetRecentlyAddedResponseBody](../../Models/Requests/GetRecentlyAddedResponseBody.md) | :heavy_minus_sign: | The recently added content | +| `FourHundredAndOneApplicationJsonObject` | [GetRecentlyAddedLibraryResponseBody](../../Models/Requests/GetRecentlyAddedLibraryResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedResponseBody.md b/docs/Models/Requests/GetRecentlyAddedResponseBody.md new file mode 100644 index 0000000..b1f6c49 --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedResponseBody.md @@ -0,0 +1,10 @@ +# GetRecentlyAddedResponseBody + +The recently added content + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetRecentlyAddedMediaContainer](../../Models/Requests/GetRecentlyAddedMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetResizedPhotoErrors.md b/docs/Models/Requests/GetResizedPhotoErrors.md new file mode 100644 index 0000000..59b8925 --- /dev/null +++ b/docs/Models/Requests/GetResizedPhotoErrors.md @@ -0,0 +1,10 @@ +# GetResizedPhotoErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetResizedPhotoRequest.md b/docs/Models/Requests/GetResizedPhotoRequest.md new file mode 100644 index 0000000..cee782c --- /dev/null +++ b/docs/Models/Requests/GetResizedPhotoRequest.md @@ -0,0 +1,14 @@ +# GetResizedPhotoRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Width` | *double* | :heavy_check_mark: | The width for the resized photo | 110 | +| `Height` | *double* | :heavy_check_mark: | The height for the resized photo | 165 | +| `Opacity` | *long* | :heavy_check_mark: | The opacity for the resized photo | | +| `Blur` | *double* | :heavy_check_mark: | The width for the resized photo | 0 | +| `MinSize` | [MinSize](../../Models/Requests/MinSize.md) | :heavy_check_mark: | images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. | | +| `Upscale` | [Upscale](../../Models/Requests/Upscale.md) | :heavy_check_mark: | allow images to be resized beyond native dimensions. | | +| `Url` | *string* | :heavy_check_mark: | path to image within Plex | /library/metadata/49564/thumb/1654258204 | \ No newline at end of file diff --git a/docs/Models/Requests/GetResizedPhotoResponse.md b/docs/Models/Requests/GetResizedPhotoResponse.md new file mode 100644 index 0000000..ec50862 --- /dev/null +++ b/docs/Models/Requests/GetResizedPhotoResponse.md @@ -0,0 +1,11 @@ +# GetResizedPhotoResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetResizedPhotoResponseBody](../../Models/Requests/GetResizedPhotoResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetResizedPhotoResponseBody.md b/docs/Models/Requests/GetResizedPhotoResponseBody.md new file mode 100644 index 0000000..37872af --- /dev/null +++ b/docs/Models/Requests/GetResizedPhotoResponseBody.md @@ -0,0 +1,10 @@ +# GetResizedPhotoResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Errors` | List<[GetResizedPhotoErrors](../../Models/Requests/GetResizedPhotoErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsCountry.md b/docs/Models/Requests/GetSearchResultsCountry.md new file mode 100644 index 0000000..dc42356 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsCountry.md @@ -0,0 +1,8 @@ +# GetSearchResultsCountry + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsDirector.md b/docs/Models/Requests/GetSearchResultsDirector.md new file mode 100644 index 0000000..d5fcccd --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsDirector.md @@ -0,0 +1,8 @@ +# GetSearchResultsDirector + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Brian De Palma | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsErrors.md b/docs/Models/Requests/GetSearchResultsErrors.md new file mode 100644 index 0000000..2845659 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsErrors.md @@ -0,0 +1,10 @@ +# GetSearchResultsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsGenre.md b/docs/Models/Requests/GetSearchResultsGenre.md new file mode 100644 index 0000000..208de7b --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsGenre.md @@ -0,0 +1,8 @@ +# GetSearchResultsGenre + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Action | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsMedia.md b/docs/Models/Requests/GetSearchResultsMedia.md new file mode 100644 index 0000000..efb5c54 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsMedia.md @@ -0,0 +1,22 @@ +# GetSearchResultsMedia + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 26610 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 6612628 | +| `Bitrate` | *double* | :heavy_minus_sign: | N/A | 4751 | +| `Width` | *double* | :heavy_minus_sign: | N/A | 1916 | +| `Height` | *double* | :heavy_minus_sign: | N/A | 796 | +| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 2.35 | +| `AudioChannels` | *double* | :heavy_minus_sign: | N/A | 6 | +| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | aac | +| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | hevc | +| `VideoResolution` | *double* | :heavy_minus_sign: | N/A | 1080 | +| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | +| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | +| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | +| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main 10 | +| `Part` | List<[GetSearchResultsPart](../../Models/Requests/GetSearchResultsPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsMediaContainer.md b/docs/Models/Requests/GetSearchResultsMediaContainer.md new file mode 100644 index 0000000..f18a31a --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsMediaContainer.md @@ -0,0 +1,13 @@ +# GetSearchResultsMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 26 | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | +| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | +| `MediaTagVersion` | *double* | :heavy_minus_sign: | N/A | 1680021154 | +| `Metadata` | List<[GetSearchResultsMetadata](../../Models/Requests/GetSearchResultsMetadata.md)> | :heavy_minus_sign: | N/A | | +| `Provider` | List<[Provider](../../Models/Requests/Provider.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsMetadata.md b/docs/Models/Requests/GetSearchResultsMetadata.md new file mode 100644 index 0000000..74c4b6b --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsMetadata.md @@ -0,0 +1,41 @@ +# GetSearchResultsMetadata + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | +| `LibrarySectionID` | *double* | :heavy_minus_sign: | N/A | 1 | +| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | +| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | +| `Personal` | *bool* | :heavy_minus_sign: | N/A | | +| `SourceTitle` | *string* | :heavy_minus_sign: | N/A | Hera | +| `RatingKey` | *double* | :heavy_minus_sign: | N/A | 10398 | +| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/10398 | +| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://movie/5d7768284de0ee001fcc8f52 | +| `Studio` | *string* | :heavy_minus_sign: | N/A | Paramount | +| `Type` | *string* | :heavy_minus_sign: | N/A | movie | +| `Title` | *string* | :heavy_minus_sign: | N/A | Mission: Impossible | +| `ContentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | +| `Summary` | *string* | :heavy_minus_sign: | N/A | When Ethan Hunt the leader of a crack espionage team whose perilous operation has gone awry with no explanation discovers that a mole has penetrated the CIA he's surprised to learn that he's the No. 1 suspect. To clear his name Hunt now must ferret out the real double agent and in the process even the score. | +| `Rating` | *double* | :heavy_minus_sign: | N/A | 6.6 | +| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | 7.1 | +| `Year` | *double* | :heavy_minus_sign: | N/A | 1996 | +| `Tagline` | *string* | :heavy_minus_sign: | N/A | Expect the impossible. | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/10398/thumb/1679505055 | +| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/10398/art/1679505055 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 6612628 | +| `OriginallyAvailableAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | N/A | 1996-05-22 00:00:00 +0000 UTC | +| `AddedAt` | *double* | :heavy_minus_sign: | N/A | 1589234571 | +| `UpdatedAt` | *double* | :heavy_minus_sign: | N/A | 1679505055 | +| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | +| `ChapterSource` | *string* | :heavy_minus_sign: | N/A | media | +| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/10501 | +| `RatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | +| `Media` | List<[GetSearchResultsMedia](../../Models/Requests/GetSearchResultsMedia.md)> | :heavy_minus_sign: | N/A | | +| `Genre` | List<[GetSearchResultsGenre](../../Models/Requests/GetSearchResultsGenre.md)> | :heavy_minus_sign: | N/A | | +| `Director` | List<[GetSearchResultsDirector](../../Models/Requests/GetSearchResultsDirector.md)> | :heavy_minus_sign: | N/A | | +| `Writer` | List<[GetSearchResultsWriter](../../Models/Requests/GetSearchResultsWriter.md)> | :heavy_minus_sign: | N/A | | +| `Country` | List<[GetSearchResultsCountry](../../Models/Requests/GetSearchResultsCountry.md)> | :heavy_minus_sign: | N/A | | +| `Role` | List<[GetSearchResultsRole](../../Models/Requests/GetSearchResultsRole.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsPart.md b/docs/Models/Requests/GetSearchResultsPart.md new file mode 100644 index 0000000..ecbafb8 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsPart.md @@ -0,0 +1,15 @@ +# GetSearchResultsPart + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 26610 | +| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/26610/1589234571/file.mkv | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 6612628 | +| `File` | *string* | :heavy_minus_sign: | N/A | /movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv | +| `Size` | *double* | :heavy_minus_sign: | N/A | 3926903851 | +| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | +| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | +| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main 10 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsRequest.md b/docs/Models/Requests/GetSearchResultsRequest.md new file mode 100644 index 0000000..7318f58 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsRequest.md @@ -0,0 +1,8 @@ +# GetSearchResultsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `Query` | *string* | :heavy_check_mark: | The search query string to use | 110 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsResponse.md b/docs/Models/Requests/GetSearchResultsResponse.md new file mode 100644 index 0000000..8231b51 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsResponse.md @@ -0,0 +1,12 @@ +# GetSearchResultsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetSearchResultsResponseBody](../../Models/Requests/GetSearchResultsResponseBody.md) | :heavy_minus_sign: | Search Results | +| `FourHundredAndOneApplicationJsonObject` | [GetSearchResultsSearchResponseBody](../../Models/Requests/GetSearchResultsSearchResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsResponseBody.md b/docs/Models/Requests/GetSearchResultsResponseBody.md new file mode 100644 index 0000000..a83af07 --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsResponseBody.md @@ -0,0 +1,10 @@ +# GetSearchResultsResponseBody + +Search Results + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetSearchResultsMediaContainer](../../Models/Requests/GetSearchResultsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsRole.md b/docs/Models/Requests/GetSearchResultsRole.md new file mode 100644 index 0000000..eb237ce --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsRole.md @@ -0,0 +1,8 @@ +# GetSearchResultsRole + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Tom Cruise | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsSearchResponseBody.md b/docs/Models/Requests/GetSearchResultsSearchResponseBody.md new file mode 100644 index 0000000..e70dade --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsSearchResponseBody.md @@ -0,0 +1,10 @@ +# GetSearchResultsSearchResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `Errors` | List<[GetSearchResultsErrors](../../Models/Requests/GetSearchResultsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsWriter.md b/docs/Models/Requests/GetSearchResultsWriter.md new file mode 100644 index 0000000..13536fa --- /dev/null +++ b/docs/Models/Requests/GetSearchResultsWriter.md @@ -0,0 +1,8 @@ +# GetSearchResultsWriter + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | David Koepp | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesActivitiesResponseBody.md b/docs/Models/Requests/GetServerActivitiesActivitiesResponseBody.md new file mode 100644 index 0000000..a5bafdf --- /dev/null +++ b/docs/Models/Requests/GetServerActivitiesActivitiesResponseBody.md @@ -0,0 +1,10 @@ +# GetServerActivitiesActivitiesResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Errors` | List<[GetServerActivitiesErrors](../../Models/Requests/GetServerActivitiesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesErrors.md b/docs/Models/Requests/GetServerActivitiesErrors.md new file mode 100644 index 0000000..db2b54d --- /dev/null +++ b/docs/Models/Requests/GetServerActivitiesErrors.md @@ -0,0 +1,10 @@ +# GetServerActivitiesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesMediaContainer.md b/docs/Models/Requests/GetServerActivitiesMediaContainer.md new file mode 100644 index 0000000..8029482 --- /dev/null +++ b/docs/Models/Requests/GetServerActivitiesMediaContainer.md @@ -0,0 +1,9 @@ +# GetServerActivitiesMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | +| `Activity` | List<[Activity](../../Models/Requests/Activity.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesResponse.md b/docs/Models/Requests/GetServerActivitiesResponse.md new file mode 100644 index 0000000..ac4c2e0 --- /dev/null +++ b/docs/Models/Requests/GetServerActivitiesResponse.md @@ -0,0 +1,12 @@ +# GetServerActivitiesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetServerActivitiesResponseBody](../../Models/Requests/GetServerActivitiesResponseBody.md) | :heavy_minus_sign: | The Server Activities | +| `FourHundredAndOneApplicationJsonObject` | [GetServerActivitiesActivitiesResponseBody](../../Models/Requests/GetServerActivitiesActivitiesResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesResponseBody.md b/docs/Models/Requests/GetServerActivitiesResponseBody.md new file mode 100644 index 0000000..e4dfac8 --- /dev/null +++ b/docs/Models/Requests/GetServerActivitiesResponseBody.md @@ -0,0 +1,10 @@ +# GetServerActivitiesResponseBody + +The Server Activities + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetServerActivitiesMediaContainer](../../Models/Requests/GetServerActivitiesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerCapabilitiesResponse.md b/docs/Models/Requests/GetServerCapabilitiesResponse.md new file mode 100644 index 0000000..713369b --- /dev/null +++ b/docs/Models/Requests/GetServerCapabilitiesResponse.md @@ -0,0 +1,12 @@ +# GetServerCapabilitiesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetServerCapabilitiesResponseBody](../../Models/Requests/GetServerCapabilitiesResponseBody.md) | :heavy_minus_sign: | The Server Capabilities | +| `FourHundredAndOneApplicationJsonObject` | [GetServerCapabilitiesServerResponseBody](../../Models/Requests/GetServerCapabilitiesServerResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerCapabilitiesResponseBody.md b/docs/Models/Requests/GetServerCapabilitiesResponseBody.md new file mode 100644 index 0000000..86281ba --- /dev/null +++ b/docs/Models/Requests/GetServerCapabilitiesResponseBody.md @@ -0,0 +1,10 @@ +# GetServerCapabilitiesResponseBody + +The Server Capabilities + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `MediaContainer` | [MediaContainer](../../Models/Requests/MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerCapabilitiesServerResponseBody.md b/docs/Models/Requests/GetServerCapabilitiesServerResponseBody.md new file mode 100644 index 0000000..e7e99ba --- /dev/null +++ b/docs/Models/Requests/GetServerCapabilitiesServerResponseBody.md @@ -0,0 +1,10 @@ +# GetServerCapabilitiesServerResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `Errors` | List<[Errors](../../Models/Requests/Errors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerIdentityErrors.md b/docs/Models/Requests/GetServerIdentityErrors.md new file mode 100644 index 0000000..2b030bb --- /dev/null +++ b/docs/Models/Requests/GetServerIdentityErrors.md @@ -0,0 +1,10 @@ +# GetServerIdentityErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerIdentityMediaContainer.md b/docs/Models/Requests/GetServerIdentityMediaContainer.md new file mode 100644 index 0000000..fc0f9a8 --- /dev/null +++ b/docs/Models/Requests/GetServerIdentityMediaContainer.md @@ -0,0 +1,11 @@ +# GetServerIdentityMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 0 | +| `Claimed` | *bool* | :heavy_minus_sign: | N/A | | +| `MachineIdentifier` | *string* | :heavy_minus_sign: | N/A | 96f2fe7a78c9dc1f16a16bedbe90f98149be16b4 | +| `Version` | *string* | :heavy_minus_sign: | N/A | 1.31.3.6868-28fc46b27 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerIdentityResponse.md b/docs/Models/Requests/GetServerIdentityResponse.md new file mode 100644 index 0000000..850b5b3 --- /dev/null +++ b/docs/Models/Requests/GetServerIdentityResponse.md @@ -0,0 +1,12 @@ +# GetServerIdentityResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetServerIdentityResponseBody](../../Models/Requests/GetServerIdentityResponseBody.md) | :heavy_minus_sign: | The Transcode Sessions | +| `FourHundredAndOneApplicationJsonObject` | [GetServerIdentityServerResponseBody](../../Models/Requests/GetServerIdentityServerResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerIdentityResponseBody.md b/docs/Models/Requests/GetServerIdentityResponseBody.md new file mode 100644 index 0000000..f595250 --- /dev/null +++ b/docs/Models/Requests/GetServerIdentityResponseBody.md @@ -0,0 +1,10 @@ +# GetServerIdentityResponseBody + +The Transcode Sessions + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetServerIdentityMediaContainer](../../Models/Requests/GetServerIdentityMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerIdentityServerResponseBody.md b/docs/Models/Requests/GetServerIdentityServerResponseBody.md new file mode 100644 index 0000000..952f1c6 --- /dev/null +++ b/docs/Models/Requests/GetServerIdentityServerResponseBody.md @@ -0,0 +1,10 @@ +# GetServerIdentityServerResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `Errors` | List<[GetServerIdentityErrors](../../Models/Requests/GetServerIdentityErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListErrors.md b/docs/Models/Requests/GetServerListErrors.md new file mode 100644 index 0000000..a77fd57 --- /dev/null +++ b/docs/Models/Requests/GetServerListErrors.md @@ -0,0 +1,10 @@ +# GetServerListErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListMediaContainer.md b/docs/Models/Requests/GetServerListMediaContainer.md new file mode 100644 index 0000000..954b94f --- /dev/null +++ b/docs/Models/Requests/GetServerListMediaContainer.md @@ -0,0 +1,9 @@ +# GetServerListMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 1 | +| `Server` | List<[GetServerListServer](../../Models/Requests/GetServerListServer.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListResponse.md b/docs/Models/Requests/GetServerListResponse.md new file mode 100644 index 0000000..63351cf --- /dev/null +++ b/docs/Models/Requests/GetServerListResponse.md @@ -0,0 +1,12 @@ +# GetServerListResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetServerListResponseBody](../../Models/Requests/GetServerListResponseBody.md) | :heavy_minus_sign: | List of Servers | +| `FourHundredAndOneApplicationJsonObject` | [GetServerListServerResponseBody](../../Models/Requests/GetServerListServerResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListResponseBody.md b/docs/Models/Requests/GetServerListResponseBody.md new file mode 100644 index 0000000..620a466 --- /dev/null +++ b/docs/Models/Requests/GetServerListResponseBody.md @@ -0,0 +1,10 @@ +# GetServerListResponseBody + +List of Servers + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `MediaContainer` | [GetServerListMediaContainer](../../Models/Requests/GetServerListMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListServer.md b/docs/Models/Requests/GetServerListServer.md new file mode 100644 index 0000000..2e68938 --- /dev/null +++ b/docs/Models/Requests/GetServerListServer.md @@ -0,0 +1,13 @@ +# GetServerListServer + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `Name` | *string* | :heavy_minus_sign: | N/A | Hera | +| `Host` | *string* | :heavy_minus_sign: | N/A | 10.10.10.47 | +| `Address` | *string* | :heavy_minus_sign: | N/A | 10.10.10.47 | +| `Port` | *double* | :heavy_minus_sign: | N/A | 32400 | +| `MachineIdentifier` | *string* | :heavy_minus_sign: | N/A | 96f2fe7a78c9dc1f16a16bedbe90f98149be16b4 | +| `Version` | *string* | :heavy_minus_sign: | N/A | 1.31.3.6868-28fc46b27 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListServerResponseBody.md b/docs/Models/Requests/GetServerListServerResponseBody.md new file mode 100644 index 0000000..7517b91 --- /dev/null +++ b/docs/Models/Requests/GetServerListServerResponseBody.md @@ -0,0 +1,10 @@ +# GetServerListServerResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Errors` | List<[GetServerListErrors](../../Models/Requests/GetServerListErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerPreferencesErrors.md b/docs/Models/Requests/GetServerPreferencesErrors.md new file mode 100644 index 0000000..3793746 --- /dev/null +++ b/docs/Models/Requests/GetServerPreferencesErrors.md @@ -0,0 +1,10 @@ +# GetServerPreferencesErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerPreferencesResponse.md b/docs/Models/Requests/GetServerPreferencesResponse.md new file mode 100644 index 0000000..616cd0b --- /dev/null +++ b/docs/Models/Requests/GetServerPreferencesResponse.md @@ -0,0 +1,11 @@ +# GetServerPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetServerPreferencesResponseBody](../../Models/Requests/GetServerPreferencesResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerPreferencesResponseBody.md b/docs/Models/Requests/GetServerPreferencesResponseBody.md new file mode 100644 index 0000000..dea0fa7 --- /dev/null +++ b/docs/Models/Requests/GetServerPreferencesResponseBody.md @@ -0,0 +1,10 @@ +# GetServerPreferencesResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `Errors` | List<[GetServerPreferencesErrors](../../Models/Requests/GetServerPreferencesErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryErrors.md b/docs/Models/Requests/GetSessionHistoryErrors.md new file mode 100644 index 0000000..017669a --- /dev/null +++ b/docs/Models/Requests/GetSessionHistoryErrors.md @@ -0,0 +1,10 @@ +# GetSessionHistoryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryResponse.md b/docs/Models/Requests/GetSessionHistoryResponse.md new file mode 100644 index 0000000..b2bd344 --- /dev/null +++ b/docs/Models/Requests/GetSessionHistoryResponse.md @@ -0,0 +1,11 @@ +# GetSessionHistoryResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetSessionHistoryResponseBody](../../Models/Requests/GetSessionHistoryResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryResponseBody.md b/docs/Models/Requests/GetSessionHistoryResponseBody.md new file mode 100644 index 0000000..1b107e3 --- /dev/null +++ b/docs/Models/Requests/GetSessionHistoryResponseBody.md @@ -0,0 +1,10 @@ +# GetSessionHistoryResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `Errors` | List<[GetSessionHistoryErrors](../../Models/Requests/GetSessionHistoryErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsErrors.md b/docs/Models/Requests/GetSessionsErrors.md new file mode 100644 index 0000000..670cbd6 --- /dev/null +++ b/docs/Models/Requests/GetSessionsErrors.md @@ -0,0 +1,10 @@ +# GetSessionsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsResponse.md b/docs/Models/Requests/GetSessionsResponse.md new file mode 100644 index 0000000..a9a99cd --- /dev/null +++ b/docs/Models/Requests/GetSessionsResponse.md @@ -0,0 +1,11 @@ +# GetSessionsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetSessionsResponseBody](../../Models/Requests/GetSessionsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsResponseBody.md b/docs/Models/Requests/GetSessionsResponseBody.md new file mode 100644 index 0000000..0304481 --- /dev/null +++ b/docs/Models/Requests/GetSessionsResponseBody.md @@ -0,0 +1,10 @@ +# GetSessionsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Errors` | List<[GetSessionsErrors](../../Models/Requests/GetSessionsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationErrors.md b/docs/Models/Requests/GetSourceConnectionInformationErrors.md new file mode 100644 index 0000000..7c13e45 --- /dev/null +++ b/docs/Models/Requests/GetSourceConnectionInformationErrors.md @@ -0,0 +1,10 @@ +# GetSourceConnectionInformationErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationRequest.md b/docs/Models/Requests/GetSourceConnectionInformationRequest.md new file mode 100644 index 0000000..e5439ac --- /dev/null +++ b/docs/Models/Requests/GetSourceConnectionInformationRequest.md @@ -0,0 +1,8 @@ +# GetSourceConnectionInformationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `Source` | *string* | :heavy_check_mark: | The source identifier with an included prefix. | server://client-identifier | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationResponse.md b/docs/Models/Requests/GetSourceConnectionInformationResponse.md new file mode 100644 index 0000000..9f06a2f --- /dev/null +++ b/docs/Models/Requests/GetSourceConnectionInformationResponse.md @@ -0,0 +1,11 @@ +# GetSourceConnectionInformationResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetSourceConnectionInformationResponseBody](../../Models/Requests/GetSourceConnectionInformationResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationResponseBody.md b/docs/Models/Requests/GetSourceConnectionInformationResponseBody.md new file mode 100644 index 0000000..2d953ba --- /dev/null +++ b/docs/Models/Requests/GetSourceConnectionInformationResponseBody.md @@ -0,0 +1,10 @@ +# GetSourceConnectionInformationResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Errors` | List<[GetSourceConnectionInformationErrors](../../Models/Requests/GetSourceConnectionInformationErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTimelineErrors.md b/docs/Models/Requests/GetTimelineErrors.md new file mode 100644 index 0000000..2fdbe97 --- /dev/null +++ b/docs/Models/Requests/GetTimelineErrors.md @@ -0,0 +1,10 @@ +# GetTimelineErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTimelineRequest.md b/docs/Models/Requests/GetTimelineRequest.md new file mode 100644 index 0000000..bf35e5a --- /dev/null +++ b/docs/Models/Requests/GetTimelineRequest.md @@ -0,0 +1,17 @@ +# GetTimelineRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `RatingKey` | *double* | :heavy_check_mark: | The rating key of the media item | +| `Key` | *string* | :heavy_check_mark: | The key of the media item to get the timeline for | +| `State` | [State](../../Models/Requests/State.md) | :heavy_check_mark: | The state of the media item | +| `HasMDE` | *double* | :heavy_check_mark: | Whether the media item has MDE | +| `Time` | *double* | :heavy_check_mark: | The time of the media item | +| `Duration` | *double* | :heavy_check_mark: | The duration of the media item | +| `Context` | *string* | :heavy_check_mark: | The context of the media item | +| `PlayQueueItemID` | *double* | :heavy_check_mark: | The play queue item ID of the media item | +| `PlayBackTime` | *double* | :heavy_check_mark: | The playback time of the media item | +| `Row` | *double* | :heavy_check_mark: | The row of the media item | \ No newline at end of file diff --git a/docs/Models/Requests/GetTimelineResponse.md b/docs/Models/Requests/GetTimelineResponse.md new file mode 100644 index 0000000..d2ab889 --- /dev/null +++ b/docs/Models/Requests/GetTimelineResponse.md @@ -0,0 +1,11 @@ +# GetTimelineResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetTimelineResponseBody](../../Models/Requests/GetTimelineResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetTimelineResponseBody.md b/docs/Models/Requests/GetTimelineResponseBody.md new file mode 100644 index 0000000..07068be --- /dev/null +++ b/docs/Models/Requests/GetTimelineResponseBody.md @@ -0,0 +1,10 @@ +# GetTimelineResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Errors` | List<[GetTimelineErrors](../../Models/Requests/GetTimelineErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsErrors.md b/docs/Models/Requests/GetTranscodeSessionsErrors.md new file mode 100644 index 0000000..05fe588 --- /dev/null +++ b/docs/Models/Requests/GetTranscodeSessionsErrors.md @@ -0,0 +1,10 @@ +# GetTranscodeSessionsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsMediaContainer.md b/docs/Models/Requests/GetTranscodeSessionsMediaContainer.md new file mode 100644 index 0000000..6487171 --- /dev/null +++ b/docs/Models/Requests/GetTranscodeSessionsMediaContainer.md @@ -0,0 +1,9 @@ +# GetTranscodeSessionsMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | 1 | +| `TranscodeSession` | List<[TranscodeSession](../../Models/Requests/TranscodeSession.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsResponse.md b/docs/Models/Requests/GetTranscodeSessionsResponse.md new file mode 100644 index 0000000..b236f11 --- /dev/null +++ b/docs/Models/Requests/GetTranscodeSessionsResponse.md @@ -0,0 +1,12 @@ +# GetTranscodeSessionsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `TwoHundredApplicationJsonObject` | [GetTranscodeSessionsResponseBody](../../Models/Requests/GetTranscodeSessionsResponseBody.md) | :heavy_minus_sign: | The Transcode Sessions | +| `FourHundredAndOneApplicationJsonObject` | [GetTranscodeSessionsSessionsResponseBody](../../Models/Requests/GetTranscodeSessionsSessionsResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsResponseBody.md b/docs/Models/Requests/GetTranscodeSessionsResponseBody.md new file mode 100644 index 0000000..ec01d26 --- /dev/null +++ b/docs/Models/Requests/GetTranscodeSessionsResponseBody.md @@ -0,0 +1,10 @@ +# GetTranscodeSessionsResponseBody + +The Transcode Sessions + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetTranscodeSessionsMediaContainer](../../Models/Requests/GetTranscodeSessionsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsSessionsResponseBody.md b/docs/Models/Requests/GetTranscodeSessionsSessionsResponseBody.md new file mode 100644 index 0000000..5e10e9b --- /dev/null +++ b/docs/Models/Requests/GetTranscodeSessionsSessionsResponseBody.md @@ -0,0 +1,10 @@ +# GetTranscodeSessionsSessionsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `Errors` | List<[GetTranscodeSessionsErrors](../../Models/Requests/GetTranscodeSessionsErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenErrors.md b/docs/Models/Requests/GetTransientTokenErrors.md new file mode 100644 index 0000000..1a2d4e5 --- /dev/null +++ b/docs/Models/Requests/GetTransientTokenErrors.md @@ -0,0 +1,10 @@ +# GetTransientTokenErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenRequest.md b/docs/Models/Requests/GetTransientTokenRequest.md new file mode 100644 index 0000000..44f2370 --- /dev/null +++ b/docs/Models/Requests/GetTransientTokenRequest.md @@ -0,0 +1,9 @@ +# GetTransientTokenRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Type` | [QueryParamType](../../Models/Requests/QueryParamType.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. | +| `Scope` | [Scope](../../Models/Requests/Scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenResponse.md b/docs/Models/Requests/GetTransientTokenResponse.md new file mode 100644 index 0000000..010d97c --- /dev/null +++ b/docs/Models/Requests/GetTransientTokenResponse.md @@ -0,0 +1,11 @@ +# GetTransientTokenResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetTransientTokenResponseBody](../../Models/Requests/GetTransientTokenResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenResponseBody.md b/docs/Models/Requests/GetTransientTokenResponseBody.md new file mode 100644 index 0000000..c94a1c1 --- /dev/null +++ b/docs/Models/Requests/GetTransientTokenResponseBody.md @@ -0,0 +1,10 @@ +# GetTransientTokenResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `Errors` | List<[GetTransientTokenErrors](../../Models/Requests/GetTransientTokenErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdateStatusErrors.md b/docs/Models/Requests/GetUpdateStatusErrors.md new file mode 100644 index 0000000..2e7f9da --- /dev/null +++ b/docs/Models/Requests/GetUpdateStatusErrors.md @@ -0,0 +1,10 @@ +# GetUpdateStatusErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdateStatusResponse.md b/docs/Models/Requests/GetUpdateStatusResponse.md new file mode 100644 index 0000000..c41c0fb --- /dev/null +++ b/docs/Models/Requests/GetUpdateStatusResponse.md @@ -0,0 +1,11 @@ +# GetUpdateStatusResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [GetUpdateStatusResponseBody](../../Models/Requests/GetUpdateStatusResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdateStatusResponseBody.md b/docs/Models/Requests/GetUpdateStatusResponseBody.md new file mode 100644 index 0000000..fb55741 --- /dev/null +++ b/docs/Models/Requests/GetUpdateStatusResponseBody.md @@ -0,0 +1,10 @@ +# GetUpdateStatusResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Errors` | List<[GetUpdateStatusErrors](../../Models/Requests/GetUpdateStatusErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Guids.md b/docs/Models/Requests/Guids.md new file mode 100644 index 0000000..596bd01 --- /dev/null +++ b/docs/Models/Requests/Guids.md @@ -0,0 +1,8 @@ +# Guids + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Id` | *string* | :heavy_minus_sign: | N/A | imdb://tt13303712 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeDetails.md b/docs/Models/Requests/IncludeDetails.md new file mode 100644 index 0000000..7085055 --- /dev/null +++ b/docs/Models/Requests/IncludeDetails.md @@ -0,0 +1,13 @@ +# IncludeDetails + +Whether or not to include details for a section (types, filters, and sorts). +Only exists for backwards compatibility, media providers other than the server libraries have it on always. + + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Level.md b/docs/Models/Requests/Level.md new file mode 100644 index 0000000..7be3adb --- /dev/null +++ b/docs/Models/Requests/Level.md @@ -0,0 +1,20 @@ +# Level + +An integer log level to write to the PMS log with. +0: Error +1: Warning +2: Info +3: Debug +4: Verbose + + + +## Values + +| Name | Value | +| ------- | ------- | +| `Zero` | 0 | +| `One` | 1 | +| `Two` | 2 | +| `Three` | 3 | +| `Four` | 4 | \ No newline at end of file diff --git a/docs/Models/Requests/LogLineErrors.md b/docs/Models/Requests/LogLineErrors.md new file mode 100644 index 0000000..0e246a2 --- /dev/null +++ b/docs/Models/Requests/LogLineErrors.md @@ -0,0 +1,10 @@ +# LogLineErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/LogLineRequest.md b/docs/Models/Requests/LogLineRequest.md new file mode 100644 index 0000000..c290546 --- /dev/null +++ b/docs/Models/Requests/LogLineRequest.md @@ -0,0 +1,10 @@ +# LogLineRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `Level` | [Level](../../Models/Requests/Level.md) | :heavy_check_mark: | An integer log level to write to the PMS log with.
0: Error
1: Warning
2: Info
3: Debug
4: Verbose
| | +| `Message` | *string* | :heavy_check_mark: | The text of the message to write to the log. | | +| `Source` | *string* | :heavy_check_mark: | a string indicating the source of the message. | | \ No newline at end of file diff --git a/docs/Models/Requests/LogLineResponse.md b/docs/Models/Requests/LogLineResponse.md new file mode 100644 index 0000000..1238d43 --- /dev/null +++ b/docs/Models/Requests/LogLineResponse.md @@ -0,0 +1,11 @@ +# LogLineResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [LogLineResponseBody](../../Models/Requests/LogLineResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/LogLineResponseBody.md b/docs/Models/Requests/LogLineResponseBody.md new file mode 100644 index 0000000..07e6a9d --- /dev/null +++ b/docs/Models/Requests/LogLineResponseBody.md @@ -0,0 +1,10 @@ +# LogLineResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `Errors` | List<[LogLineErrors](../../Models/Requests/LogLineErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/LogMultiLineErrors.md b/docs/Models/Requests/LogMultiLineErrors.md new file mode 100644 index 0000000..42f49b8 --- /dev/null +++ b/docs/Models/Requests/LogMultiLineErrors.md @@ -0,0 +1,10 @@ +# LogMultiLineErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/LogMultiLineResponse.md b/docs/Models/Requests/LogMultiLineResponse.md new file mode 100644 index 0000000..3c605e4 --- /dev/null +++ b/docs/Models/Requests/LogMultiLineResponse.md @@ -0,0 +1,11 @@ +# LogMultiLineResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [LogMultiLineResponseBody](../../Models/Requests/LogMultiLineResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/LogMultiLineResponseBody.md b/docs/Models/Requests/LogMultiLineResponseBody.md new file mode 100644 index 0000000..8fb56b3 --- /dev/null +++ b/docs/Models/Requests/LogMultiLineResponseBody.md @@ -0,0 +1,10 @@ +# LogMultiLineResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `Errors` | List<[LogMultiLineErrors](../../Models/Requests/LogMultiLineErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MarkPlayedErrors.md b/docs/Models/Requests/MarkPlayedErrors.md new file mode 100644 index 0000000..5dada91 --- /dev/null +++ b/docs/Models/Requests/MarkPlayedErrors.md @@ -0,0 +1,10 @@ +# MarkPlayedErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/MarkPlayedRequest.md b/docs/Models/Requests/MarkPlayedRequest.md new file mode 100644 index 0000000..cf766c8 --- /dev/null +++ b/docs/Models/Requests/MarkPlayedRequest.md @@ -0,0 +1,8 @@ +# MarkPlayedRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Key` | *double* | :heavy_check_mark: | The media key to mark as played | 59398 | \ No newline at end of file diff --git a/docs/Models/Requests/MarkPlayedResponse.md b/docs/Models/Requests/MarkPlayedResponse.md new file mode 100644 index 0000000..910a6f7 --- /dev/null +++ b/docs/Models/Requests/MarkPlayedResponse.md @@ -0,0 +1,11 @@ +# MarkPlayedResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [MarkPlayedResponseBody](../../Models/Requests/MarkPlayedResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/MarkPlayedResponseBody.md b/docs/Models/Requests/MarkPlayedResponseBody.md new file mode 100644 index 0000000..514839e --- /dev/null +++ b/docs/Models/Requests/MarkPlayedResponseBody.md @@ -0,0 +1,10 @@ +# MarkPlayedResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Errors` | List<[MarkPlayedErrors](../../Models/Requests/MarkPlayedErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MarkUnplayedErrors.md b/docs/Models/Requests/MarkUnplayedErrors.md new file mode 100644 index 0000000..66993f3 --- /dev/null +++ b/docs/Models/Requests/MarkUnplayedErrors.md @@ -0,0 +1,10 @@ +# MarkUnplayedErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/MarkUnplayedRequest.md b/docs/Models/Requests/MarkUnplayedRequest.md new file mode 100644 index 0000000..e1ed9c8 --- /dev/null +++ b/docs/Models/Requests/MarkUnplayedRequest.md @@ -0,0 +1,8 @@ +# MarkUnplayedRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `Key` | *double* | :heavy_check_mark: | The media key to mark as Unplayed | 59398 | \ No newline at end of file diff --git a/docs/Models/Requests/MarkUnplayedResponse.md b/docs/Models/Requests/MarkUnplayedResponse.md new file mode 100644 index 0000000..4a27d6d --- /dev/null +++ b/docs/Models/Requests/MarkUnplayedResponse.md @@ -0,0 +1,11 @@ +# MarkUnplayedResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [MarkUnplayedResponseBody](../../Models/Requests/MarkUnplayedResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/MarkUnplayedResponseBody.md b/docs/Models/Requests/MarkUnplayedResponseBody.md new file mode 100644 index 0000000..f6f5201 --- /dev/null +++ b/docs/Models/Requests/MarkUnplayedResponseBody.md @@ -0,0 +1,10 @@ +# MarkUnplayedResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `Errors` | List<[MarkUnplayedErrors](../../Models/Requests/MarkUnplayedErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Media.md b/docs/Models/Requests/Media.md new file mode 100644 index 0000000..da47c0f --- /dev/null +++ b/docs/Models/Requests/Media.md @@ -0,0 +1,23 @@ +# Media + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 120345 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 7474422 | +| `Bitrate` | *double* | :heavy_minus_sign: | N/A | 3623 | +| `Width` | *double* | :heavy_minus_sign: | N/A | 1920 | +| `Height` | *double* | :heavy_minus_sign: | N/A | 804 | +| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 2.35 | +| `AudioChannels` | *double* | :heavy_minus_sign: | N/A | 6 | +| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | ac3 | +| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | +| `VideoResolution` | *double* | :heavy_minus_sign: | N/A | 1080 | +| `Container` | *string* | :heavy_minus_sign: | N/A | mp4 | +| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | +| `OptimizedForStreaming` | *double* | :heavy_minus_sign: | N/A | 0 | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | | +| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | high | +| `Part` | List<[Part](../../Models/Requests/Part.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/MediaContainer.md b/docs/Models/Requests/MediaContainer.md new file mode 100644 index 0000000..c02cbe0 --- /dev/null +++ b/docs/Models/Requests/MediaContainer.md @@ -0,0 +1,58 @@ +# MediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `Size` | *double* | :heavy_minus_sign: | N/A | +| `AllowCameraUpload` | *bool* | :heavy_minus_sign: | N/A | +| `AllowChannelAccess` | *bool* | :heavy_minus_sign: | N/A | +| `AllowMediaDeletion` | *bool* | :heavy_minus_sign: | N/A | +| `AllowSharing` | *bool* | :heavy_minus_sign: | N/A | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | +| `AllowTuners` | *bool* | :heavy_minus_sign: | N/A | +| `BackgroundProcessing` | *bool* | :heavy_minus_sign: | N/A | +| `Certificate` | *bool* | :heavy_minus_sign: | N/A | +| `CompanionProxy` | *bool* | :heavy_minus_sign: | N/A | +| `CountryCode` | *string* | :heavy_minus_sign: | N/A | +| `Diagnostics` | *string* | :heavy_minus_sign: | N/A | +| `EventStream` | *bool* | :heavy_minus_sign: | N/A | +| `FriendlyName` | *string* | :heavy_minus_sign: | N/A | +| `HubSearch` | *bool* | :heavy_minus_sign: | N/A | +| `ItemClusters` | *bool* | :heavy_minus_sign: | N/A | +| `Livetv` | *double* | :heavy_minus_sign: | N/A | +| `MachineIdentifier` | *string* | :heavy_minus_sign: | N/A | +| `MediaProviders` | *bool* | :heavy_minus_sign: | N/A | +| `Multiuser` | *bool* | :heavy_minus_sign: | N/A | +| `MusicAnalysis` | *double* | :heavy_minus_sign: | N/A | +| `MyPlex` | *bool* | :heavy_minus_sign: | N/A | +| `MyPlexMappingState` | *string* | :heavy_minus_sign: | N/A | +| `MyPlexSigninState` | *string* | :heavy_minus_sign: | N/A | +| `MyPlexSubscription` | *bool* | :heavy_minus_sign: | N/A | +| `MyPlexUsername` | *string* | :heavy_minus_sign: | N/A | +| `OfflineTranscode` | *double* | :heavy_minus_sign: | N/A | +| `OwnerFeatures` | *string* | :heavy_minus_sign: | N/A | +| `PhotoAutoTag` | *bool* | :heavy_minus_sign: | N/A | +| `Platform` | *string* | :heavy_minus_sign: | N/A | +| `PlatformVersion` | *string* | :heavy_minus_sign: | N/A | +| `PluginHost` | *bool* | :heavy_minus_sign: | N/A | +| `PushNotifications` | *bool* | :heavy_minus_sign: | N/A | +| `ReadOnlyLibraries` | *bool* | :heavy_minus_sign: | N/A | +| `StreamingBrainABRVersion` | *double* | :heavy_minus_sign: | N/A | +| `StreamingBrainVersion` | *double* | :heavy_minus_sign: | N/A | +| `Sync` | *bool* | :heavy_minus_sign: | N/A | +| `TranscoderActiveVideoSessions` | *double* | :heavy_minus_sign: | N/A | +| `TranscoderAudio` | *bool* | :heavy_minus_sign: | N/A | +| `TranscoderLyrics` | *bool* | :heavy_minus_sign: | N/A | +| `TranscoderPhoto` | *bool* | :heavy_minus_sign: | N/A | +| `TranscoderSubtitles` | *bool* | :heavy_minus_sign: | N/A | +| `TranscoderVideo` | *bool* | :heavy_minus_sign: | N/A | +| `TranscoderVideoBitrates` | *string* | :heavy_minus_sign: | N/A | +| `TranscoderVideoQualities` | *string* | :heavy_minus_sign: | N/A | +| `TranscoderVideoResolutions` | *string* | :heavy_minus_sign: | N/A | +| `UpdatedAt` | *double* | :heavy_minus_sign: | N/A | +| `Updater` | *bool* | :heavy_minus_sign: | N/A | +| `Version` | *string* | :heavy_minus_sign: | N/A | +| `VoiceSearch` | *bool* | :heavy_minus_sign: | N/A | +| `Directory` | List<[Directory](../../Models/Requests/Directory.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Metadata.md b/docs/Models/Requests/Metadata.md new file mode 100644 index 0000000..4b189bd --- /dev/null +++ b/docs/Models/Requests/Metadata.md @@ -0,0 +1,39 @@ +# Metadata + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | +| `LibrarySectionID` | *double* | :heavy_minus_sign: | N/A | 1 | +| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | +| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | +| `RatingKey` | *double* | :heavy_minus_sign: | N/A | 59398 | +| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/59398 | +| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://movie/5e161a83bea6ac004126e148 | +| `Studio` | *string* | :heavy_minus_sign: | N/A | Marvel Studios | +| `Type` | *string* | :heavy_minus_sign: | N/A | movie | +| `Title` | *string* | :heavy_minus_sign: | N/A | Ant-Man and the Wasp: Quantumania | +| `ContentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | +| `Summary` | *string* | :heavy_minus_sign: | N/A | Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible. | +| `Rating` | *double* | :heavy_minus_sign: | N/A | 4.7 | +| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | 8.3 | +| `Year` | *double* | :heavy_minus_sign: | N/A | 2023 | +| `Tagline` | *string* | :heavy_minus_sign: | N/A | Witness the beginning of a new dynasty. | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/59398/thumb/1681888010 | +| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/59398/art/1681888010 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 7474422 | +| `OriginallyAvailableAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | N/A | 2023-02-15 00:00:00 +0000 UTC | +| `AddedAt` | *double* | :heavy_minus_sign: | N/A | 1681803215 | +| `UpdatedAt` | *double* | :heavy_minus_sign: | N/A | 1681888010 | +| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | +| `ChapterSource` | *string* | :heavy_minus_sign: | N/A | media | +| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/59399 | +| `RatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.rotten | +| `Media` | List<[Models.Requests.Media](../../Models/Requests/Media.md)> | :heavy_minus_sign: | N/A | | +| `Genre` | List<[Genre](../../Models/Requests/Genre.md)> | :heavy_minus_sign: | N/A | | +| `Director` | List<[Director](../../Models/Requests/Director.md)> | :heavy_minus_sign: | N/A | | +| `Writer` | List<[Writer](../../Models/Requests/Writer.md)> | :heavy_minus_sign: | N/A | | +| `Country` | List<[Country](../../Models/Requests/Country.md)> | :heavy_minus_sign: | N/A | | +| `Role` | List<[Role](../../Models/Requests/Role.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/MinSize.md b/docs/Models/Requests/MinSize.md new file mode 100644 index 0000000..cb991b5 --- /dev/null +++ b/docs/Models/Requests/MinSize.md @@ -0,0 +1,11 @@ +# MinSize + +images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/MyPlex.md b/docs/Models/Requests/MyPlex.md new file mode 100644 index 0000000..849c8de --- /dev/null +++ b/docs/Models/Requests/MyPlex.md @@ -0,0 +1,19 @@ +# MyPlex + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AuthToken` | *string* | :heavy_minus_sign: | N/A | Z5v-PrNASDFpsaCi3CPK7 | +| `Username` | *string* | :heavy_minus_sign: | N/A | example.email@mail.com | +| `MappingState` | *string* | :heavy_minus_sign: | N/A | mapped | +| `MappingError` | *string* | :heavy_minus_sign: | N/A | | +| `SignInState` | *string* | :heavy_minus_sign: | N/A | ok | +| `PublicAddress` | *string* | :heavy_minus_sign: | N/A | 140.20.68.140 | +| `PublicPort` | *double* | :heavy_minus_sign: | N/A | 32400 | +| `PrivateAddress` | *string* | :heavy_minus_sign: | N/A | 10.10.10.47 | +| `PrivatePort` | *double* | :heavy_minus_sign: | N/A | 32400 | +| `SubscriptionFeatures` | *string* | :heavy_minus_sign: | N/A | federated-auth,hardware_transcoding,home,hwtranscode,item_clusters,kevin-bacon,livetv,loudness,lyrics,music-analysis,music_videos,pass,photo_autotags,photos-v5,photosV6-edit,photosV6-tv-albums,premium_music_metadata,radio,server-manager,session_bandwidth_restrictions,session_kick,shared-radio,sync,trailers,tuner-sharing,type-first,unsupportedtuners,webhooks | +| `SubscriptionActive` | *bool* | :heavy_minus_sign: | N/A | | +| `SubscriptionState` | *string* | :heavy_minus_sign: | N/A | Active | \ No newline at end of file diff --git a/docs/Models/Requests/OnlyTransient.md b/docs/Models/Requests/OnlyTransient.md new file mode 100644 index 0000000..763848f --- /dev/null +++ b/docs/Models/Requests/OnlyTransient.md @@ -0,0 +1,11 @@ +# OnlyTransient + +Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Part.md b/docs/Models/Requests/Part.md new file mode 100644 index 0000000..072ccb0 --- /dev/null +++ b/docs/Models/Requests/Part.md @@ -0,0 +1,17 @@ +# Part + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 120353 | +| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/120353/1681803203/file.mp4 | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 7474422 | +| `File` | *string* | :heavy_minus_sign: | N/A | /movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4 | +| `Size` | *double* | :heavy_minus_sign: | N/A | 3395307162 | +| `Container` | *string* | :heavy_minus_sign: | N/A | mp4 | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | | +| `HasThumbnail` | *double* | :heavy_minus_sign: | N/A | 1 | +| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | | +| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/Models/Requests/PathParamTaskName.md b/docs/Models/Requests/PathParamTaskName.md new file mode 100644 index 0000000..650e15c --- /dev/null +++ b/docs/Models/Requests/PathParamTaskName.md @@ -0,0 +1,23 @@ +# PathParamTaskName + +The name of the task to be started. + + +## Values + +| Name | Value | +| --------------------------- | --------------------------- | +| `BackupDatabase` | BackupDatabase | +| `BuildGracenoteCollections` | BuildGracenoteCollections | +| `CheckForUpdates` | CheckForUpdates | +| `CleanOldBundles` | CleanOldBundles | +| `CleanOldCacheFiles` | CleanOldCacheFiles | +| `DeepMediaAnalysis` | DeepMediaAnalysis | +| `GenerateAutoTags` | GenerateAutoTags | +| `GenerateChapterThumbs` | GenerateChapterThumbs | +| `GenerateMediaIndexFiles` | GenerateMediaIndexFiles | +| `OptimizeDatabase` | OptimizeDatabase | +| `RefreshLibraries` | RefreshLibraries | +| `RefreshLocalMedia` | RefreshLocalMedia | +| `RefreshPeriodicMetadata` | RefreshPeriodicMetadata | +| `UpgradeMediaAnalysis` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/Models/Requests/PerformSearchErrors.md b/docs/Models/Requests/PerformSearchErrors.md new file mode 100644 index 0000000..6846e65 --- /dev/null +++ b/docs/Models/Requests/PerformSearchErrors.md @@ -0,0 +1,10 @@ +# PerformSearchErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/PerformSearchRequest.md b/docs/Models/Requests/PerformSearchRequest.md new file mode 100644 index 0000000..d46f56f --- /dev/null +++ b/docs/Models/Requests/PerformSearchRequest.md @@ -0,0 +1,10 @@ +# PerformSearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Query` | *string* | :heavy_check_mark: | The query term | arnold | +| `SectionId` | *double* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | +| `Limit` | *double* | :heavy_minus_sign: | The number of items to return per hub | 5 | \ No newline at end of file diff --git a/docs/Models/Requests/PerformSearchResponse.md b/docs/Models/Requests/PerformSearchResponse.md new file mode 100644 index 0000000..fa3b957 --- /dev/null +++ b/docs/Models/Requests/PerformSearchResponse.md @@ -0,0 +1,11 @@ +# PerformSearchResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [PerformSearchResponseBody](../../Models/Requests/PerformSearchResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/PerformSearchResponseBody.md b/docs/Models/Requests/PerformSearchResponseBody.md new file mode 100644 index 0000000..e37143d --- /dev/null +++ b/docs/Models/Requests/PerformSearchResponseBody.md @@ -0,0 +1,10 @@ +# PerformSearchResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Errors` | List<[PerformSearchErrors](../../Models/Requests/PerformSearchErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/PerformVoiceSearchErrors.md b/docs/Models/Requests/PerformVoiceSearchErrors.md new file mode 100644 index 0000000..4565570 --- /dev/null +++ b/docs/Models/Requests/PerformVoiceSearchErrors.md @@ -0,0 +1,10 @@ +# PerformVoiceSearchErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/PerformVoiceSearchRequest.md b/docs/Models/Requests/PerformVoiceSearchRequest.md new file mode 100644 index 0000000..b378ecd --- /dev/null +++ b/docs/Models/Requests/PerformVoiceSearchRequest.md @@ -0,0 +1,10 @@ +# PerformVoiceSearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Query` | *string* | :heavy_check_mark: | The query term | dead+poop | +| `SectionId` | *double* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | +| `Limit` | *double* | :heavy_minus_sign: | The number of items to return per hub | 5 | \ No newline at end of file diff --git a/docs/Models/Requests/PerformVoiceSearchResponse.md b/docs/Models/Requests/PerformVoiceSearchResponse.md new file mode 100644 index 0000000..813cabc --- /dev/null +++ b/docs/Models/Requests/PerformVoiceSearchResponse.md @@ -0,0 +1,11 @@ +# PerformVoiceSearchResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [PerformVoiceSearchResponseBody](../../Models/Requests/PerformVoiceSearchResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/PerformVoiceSearchResponseBody.md b/docs/Models/Requests/PerformVoiceSearchResponseBody.md new file mode 100644 index 0000000..e5fc3aa --- /dev/null +++ b/docs/Models/Requests/PerformVoiceSearchResponseBody.md @@ -0,0 +1,10 @@ +# PerformVoiceSearchResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Errors` | List<[PerformVoiceSearchErrors](../../Models/Requests/PerformVoiceSearchErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/PlaylistType.md b/docs/Models/Requests/PlaylistType.md new file mode 100644 index 0000000..c09c1e5 --- /dev/null +++ b/docs/Models/Requests/PlaylistType.md @@ -0,0 +1,12 @@ +# PlaylistType + +limit to a type of playlist. + + +## Values + +| Name | Value | +| ------- | ------- | +| `Audio` | audio | +| `Video` | video | +| `Photo` | photo | \ No newline at end of file diff --git a/docs/Models/Requests/Provider.md b/docs/Models/Requests/Provider.md new file mode 100644 index 0000000..fb9b455 --- /dev/null +++ b/docs/Models/Requests/Provider.md @@ -0,0 +1,10 @@ +# Provider + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Key` | *string* | :heavy_minus_sign: | N/A | /system/search | +| `Title` | *string* | :heavy_minus_sign: | N/A | Local Network | +| `Type` | *string* | :heavy_minus_sign: | N/A | mixed | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamOnlyTransient.md b/docs/Models/Requests/QueryParamOnlyTransient.md new file mode 100644 index 0000000..6ae6613 --- /dev/null +++ b/docs/Models/Requests/QueryParamOnlyTransient.md @@ -0,0 +1,11 @@ +# QueryParamOnlyTransient + +Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamSmart.md b/docs/Models/Requests/QueryParamSmart.md new file mode 100644 index 0000000..00f49fb --- /dev/null +++ b/docs/Models/Requests/QueryParamSmart.md @@ -0,0 +1,11 @@ +# QueryParamSmart + +type of playlists to return (default is all). + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamType.md b/docs/Models/Requests/QueryParamType.md new file mode 100644 index 0000000..86cdced --- /dev/null +++ b/docs/Models/Requests/QueryParamType.md @@ -0,0 +1,10 @@ +# QueryParamType + +`delegation` - This is the only supported `type` parameter. + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Delegation` | delegation | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshLibraryErrors.md b/docs/Models/Requests/RefreshLibraryErrors.md new file mode 100644 index 0000000..8c98c2b --- /dev/null +++ b/docs/Models/Requests/RefreshLibraryErrors.md @@ -0,0 +1,10 @@ +# RefreshLibraryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshLibraryRequest.md b/docs/Models/Requests/RefreshLibraryRequest.md new file mode 100644 index 0000000..13cb4fe --- /dev/null +++ b/docs/Models/Requests/RefreshLibraryRequest.md @@ -0,0 +1,8 @@ +# RefreshLibraryRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to refresh | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshLibraryResponse.md b/docs/Models/Requests/RefreshLibraryResponse.md new file mode 100644 index 0000000..c60f57f --- /dev/null +++ b/docs/Models/Requests/RefreshLibraryResponse.md @@ -0,0 +1,11 @@ +# RefreshLibraryResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [RefreshLibraryResponseBody](../../Models/Requests/RefreshLibraryResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshLibraryResponseBody.md b/docs/Models/Requests/RefreshLibraryResponseBody.md new file mode 100644 index 0000000..e0af5d2 --- /dev/null +++ b/docs/Models/Requests/RefreshLibraryResponseBody.md @@ -0,0 +1,10 @@ +# RefreshLibraryResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[RefreshLibraryErrors](../../Models/Requests/RefreshLibraryErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ResponseBody.md b/docs/Models/Requests/ResponseBody.md new file mode 100644 index 0000000..304885d --- /dev/null +++ b/docs/Models/Requests/ResponseBody.md @@ -0,0 +1,8 @@ +# ResponseBody + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetAvailableClientsMediaContainer](../../Models/Requests/GetAvailableClientsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Role.md b/docs/Models/Requests/Role.md new file mode 100644 index 0000000..011a645 --- /dev/null +++ b/docs/Models/Requests/Role.md @@ -0,0 +1,8 @@ +# Role + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Paul Rudd | \ No newline at end of file diff --git a/docs/Models/Requests/Scope.md b/docs/Models/Requests/Scope.md new file mode 100644 index 0000000..ac7b0f1 --- /dev/null +++ b/docs/Models/Requests/Scope.md @@ -0,0 +1,10 @@ +# Scope + +`all` - This is the only supported `scope` parameter. + + +## Values + +| Name | Value | +| ----- | ----- | +| `All` | all | \ No newline at end of file diff --git a/docs/Models/Requests/Server.md b/docs/Models/Requests/Server.md new file mode 100644 index 0000000..198ee75 --- /dev/null +++ b/docs/Models/Requests/Server.md @@ -0,0 +1,18 @@ +# Server + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `Name` | *string* | :heavy_minus_sign: | N/A | iPad | +| `Host` | *string* | :heavy_minus_sign: | N/A | 10.10.10.102 | +| `Address` | *string* | :heavy_minus_sign: | N/A | 10.10.10.102 | +| `Port` | *double* | :heavy_minus_sign: | N/A | 32500 | +| `MachineIdentifier` | *string* | :heavy_minus_sign: | N/A | A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05 | +| `Version` | *string* | :heavy_minus_sign: | N/A | 8.17 | +| `Protocol` | *string* | :heavy_minus_sign: | N/A | plex | +| `Product` | *string* | :heavy_minus_sign: | N/A | Plex for iOS | +| `DeviceClass` | *string* | :heavy_minus_sign: | N/A | tablet | +| `ProtocolVersion` | *double* | :heavy_minus_sign: | N/A | 2 | +| `ProtocolCapabilities` | *string* | :heavy_minus_sign: | N/A | playback,playqueues,timeline,provider-playback | \ No newline at end of file diff --git a/docs/Models/Requests/Skip.md b/docs/Models/Requests/Skip.md new file mode 100644 index 0000000..bdc10b9 --- /dev/null +++ b/docs/Models/Requests/Skip.md @@ -0,0 +1,11 @@ +# Skip + +Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Smart.md b/docs/Models/Requests/Smart.md new file mode 100644 index 0000000..9be1798 --- /dev/null +++ b/docs/Models/Requests/Smart.md @@ -0,0 +1,11 @@ +# Smart + +whether the playlist is smart or not + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/StartAllTasksErrors.md b/docs/Models/Requests/StartAllTasksErrors.md new file mode 100644 index 0000000..ae17da8 --- /dev/null +++ b/docs/Models/Requests/StartAllTasksErrors.md @@ -0,0 +1,10 @@ +# StartAllTasksErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/StartAllTasksResponse.md b/docs/Models/Requests/StartAllTasksResponse.md new file mode 100644 index 0000000..bde9589 --- /dev/null +++ b/docs/Models/Requests/StartAllTasksResponse.md @@ -0,0 +1,11 @@ +# StartAllTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [StartAllTasksResponseBody](../../Models/Requests/StartAllTasksResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/StartAllTasksResponseBody.md b/docs/Models/Requests/StartAllTasksResponseBody.md new file mode 100644 index 0000000..03ad6e5 --- /dev/null +++ b/docs/Models/Requests/StartAllTasksResponseBody.md @@ -0,0 +1,10 @@ +# StartAllTasksResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Errors` | List<[StartAllTasksErrors](../../Models/Requests/StartAllTasksErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/StartTaskErrors.md b/docs/Models/Requests/StartTaskErrors.md new file mode 100644 index 0000000..79672cd --- /dev/null +++ b/docs/Models/Requests/StartTaskErrors.md @@ -0,0 +1,10 @@ +# StartTaskErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/StartTaskRequest.md b/docs/Models/Requests/StartTaskRequest.md new file mode 100644 index 0000000..1367e00 --- /dev/null +++ b/docs/Models/Requests/StartTaskRequest.md @@ -0,0 +1,8 @@ +# StartTaskRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `TaskName` | [TaskName](../../Models/Requests/TaskName.md) | :heavy_check_mark: | the name of the task to be started. | \ No newline at end of file diff --git a/docs/Models/Requests/StartTaskResponse.md b/docs/Models/Requests/StartTaskResponse.md new file mode 100644 index 0000000..3118102 --- /dev/null +++ b/docs/Models/Requests/StartTaskResponse.md @@ -0,0 +1,11 @@ +# StartTaskResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [StartTaskResponseBody](../../Models/Requests/StartTaskResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/StartTaskResponseBody.md b/docs/Models/Requests/StartTaskResponseBody.md new file mode 100644 index 0000000..f88e80a --- /dev/null +++ b/docs/Models/Requests/StartTaskResponseBody.md @@ -0,0 +1,10 @@ +# StartTaskResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `Errors` | List<[StartTaskErrors](../../Models/Requests/StartTaskErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/StartUniversalTranscodeErrors.md b/docs/Models/Requests/StartUniversalTranscodeErrors.md new file mode 100644 index 0000000..74bbd08 --- /dev/null +++ b/docs/Models/Requests/StartUniversalTranscodeErrors.md @@ -0,0 +1,10 @@ +# StartUniversalTranscodeErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/StartUniversalTranscodeRequest.md b/docs/Models/Requests/StartUniversalTranscodeRequest.md new file mode 100644 index 0000000..1939b6f --- /dev/null +++ b/docs/Models/Requests/StartUniversalTranscodeRequest.md @@ -0,0 +1,23 @@ +# StartUniversalTranscodeRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `HasMDE` | *double* | :heavy_check_mark: | Whether the media item has MDE | +| `Path` | *string* | :heavy_check_mark: | The path to the media item to transcode | +| `MediaIndex` | *double* | :heavy_check_mark: | The index of the media item to transcode | +| `PartIndex` | *double* | :heavy_check_mark: | The index of the part to transcode | +| `Protocol` | *string* | :heavy_check_mark: | The protocol to use for the transcode session | +| `FastSeek` | *double* | :heavy_minus_sign: | Whether to use fast seek or not | +| `DirectPlay` | *double* | :heavy_minus_sign: | Whether to use direct play or not | +| `DirectStream` | *double* | :heavy_minus_sign: | Whether to use direct stream or not | +| `SubtitleSize` | *double* | :heavy_minus_sign: | The size of the subtitles | +| `Subtites` | *string* | :heavy_minus_sign: | The subtitles | +| `AudioBoost` | *double* | :heavy_minus_sign: | The audio boost | +| `Location` | *string* | :heavy_minus_sign: | The location of the transcode session | +| `MediaBufferSize` | *double* | :heavy_minus_sign: | The size of the media buffer | +| `Session` | *string* | :heavy_minus_sign: | The session ID | +| `AddDebugOverlay` | *double* | :heavy_minus_sign: | Whether to add a debug overlay or not | +| `AutoAdjustQuality` | *double* | :heavy_minus_sign: | Whether to auto adjust quality or not | \ No newline at end of file diff --git a/docs/Models/Requests/StartUniversalTranscodeResponse.md b/docs/Models/Requests/StartUniversalTranscodeResponse.md new file mode 100644 index 0000000..df0a331 --- /dev/null +++ b/docs/Models/Requests/StartUniversalTranscodeResponse.md @@ -0,0 +1,11 @@ +# StartUniversalTranscodeResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [StartUniversalTranscodeResponseBody](../../Models/Requests/StartUniversalTranscodeResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/StartUniversalTranscodeResponseBody.md b/docs/Models/Requests/StartUniversalTranscodeResponseBody.md new file mode 100644 index 0000000..4ab972e --- /dev/null +++ b/docs/Models/Requests/StartUniversalTranscodeResponseBody.md @@ -0,0 +1,10 @@ +# StartUniversalTranscodeResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `Errors` | List<[StartUniversalTranscodeErrors](../../Models/Requests/StartUniversalTranscodeErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/State.md b/docs/Models/Requests/State.md new file mode 100644 index 0000000..52d6ca4 --- /dev/null +++ b/docs/Models/Requests/State.md @@ -0,0 +1,12 @@ +# State + +The state of the media item + + +## Values + +| Name | Value | +| --------- | --------- | +| `Playing` | playing | +| `Paused` | paused | +| `Stopped` | stopped | \ No newline at end of file diff --git a/docs/Models/Requests/StopAllTasksErrors.md b/docs/Models/Requests/StopAllTasksErrors.md new file mode 100644 index 0000000..05da726 --- /dev/null +++ b/docs/Models/Requests/StopAllTasksErrors.md @@ -0,0 +1,10 @@ +# StopAllTasksErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/StopAllTasksResponse.md b/docs/Models/Requests/StopAllTasksResponse.md new file mode 100644 index 0000000..7dc7f55 --- /dev/null +++ b/docs/Models/Requests/StopAllTasksResponse.md @@ -0,0 +1,11 @@ +# StopAllTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [StopAllTasksResponseBody](../../Models/Requests/StopAllTasksResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/StopAllTasksResponseBody.md b/docs/Models/Requests/StopAllTasksResponseBody.md new file mode 100644 index 0000000..a5df526 --- /dev/null +++ b/docs/Models/Requests/StopAllTasksResponseBody.md @@ -0,0 +1,10 @@ +# StopAllTasksResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `Errors` | List<[StopAllTasksErrors](../../Models/Requests/StopAllTasksErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/StopTaskErrors.md b/docs/Models/Requests/StopTaskErrors.md new file mode 100644 index 0000000..d589f9d --- /dev/null +++ b/docs/Models/Requests/StopTaskErrors.md @@ -0,0 +1,10 @@ +# StopTaskErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/StopTaskRequest.md b/docs/Models/Requests/StopTaskRequest.md new file mode 100644 index 0000000..3abde2f --- /dev/null +++ b/docs/Models/Requests/StopTaskRequest.md @@ -0,0 +1,8 @@ +# StopTaskRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `TaskName` | [PathParamTaskName](../../Models/Requests/PathParamTaskName.md) | :heavy_check_mark: | The name of the task to be started. | \ No newline at end of file diff --git a/docs/Models/Requests/StopTaskResponse.md b/docs/Models/Requests/StopTaskResponse.md new file mode 100644 index 0000000..7c67a16 --- /dev/null +++ b/docs/Models/Requests/StopTaskResponse.md @@ -0,0 +1,11 @@ +# StopTaskResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [StopTaskResponseBody](../../Models/Requests/StopTaskResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/StopTaskResponseBody.md b/docs/Models/Requests/StopTaskResponseBody.md new file mode 100644 index 0000000..6279ac6 --- /dev/null +++ b/docs/Models/Requests/StopTaskResponseBody.md @@ -0,0 +1,10 @@ +# StopTaskResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `Errors` | List<[StopTaskErrors](../../Models/Requests/StopTaskErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/StopTranscodeSessionErrors.md b/docs/Models/Requests/StopTranscodeSessionErrors.md new file mode 100644 index 0000000..2ed901d --- /dev/null +++ b/docs/Models/Requests/StopTranscodeSessionErrors.md @@ -0,0 +1,10 @@ +# StopTranscodeSessionErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/StopTranscodeSessionRequest.md b/docs/Models/Requests/StopTranscodeSessionRequest.md new file mode 100644 index 0000000..d694f48 --- /dev/null +++ b/docs/Models/Requests/StopTranscodeSessionRequest.md @@ -0,0 +1,8 @@ +# StopTranscodeSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `SessionKey` | *string* | :heavy_check_mark: | the Key of the transcode session to stop | zz7llzqlx8w9vnrsbnwhbmep | \ No newline at end of file diff --git a/docs/Models/Requests/StopTranscodeSessionResponse.md b/docs/Models/Requests/StopTranscodeSessionResponse.md new file mode 100644 index 0000000..c6e796d --- /dev/null +++ b/docs/Models/Requests/StopTranscodeSessionResponse.md @@ -0,0 +1,11 @@ +# StopTranscodeSessionResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [StopTranscodeSessionResponseBody](../../Models/Requests/StopTranscodeSessionResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/StopTranscodeSessionResponseBody.md b/docs/Models/Requests/StopTranscodeSessionResponseBody.md new file mode 100644 index 0000000..0e6ec87 --- /dev/null +++ b/docs/Models/Requests/StopTranscodeSessionResponseBody.md @@ -0,0 +1,10 @@ +# StopTranscodeSessionResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `Errors` | List<[StopTranscodeSessionErrors](../../Models/Requests/StopTranscodeSessionErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Stream.md b/docs/Models/Requests/Stream.md new file mode 100644 index 0000000..9a5efb8 --- /dev/null +++ b/docs/Models/Requests/Stream.md @@ -0,0 +1,30 @@ +# Stream + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `Id` | *double* | :heavy_minus_sign: | N/A | 211234 | +| `StreamType` | *double* | :heavy_minus_sign: | N/A | 1 | +| `Default` | *bool* | :heavy_minus_sign: | N/A | | +| `Codec` | *string* | :heavy_minus_sign: | N/A | hevc | +| `Index` | *double* | :heavy_minus_sign: | N/A | 0 | +| `Bitrate` | *double* | :heavy_minus_sign: | N/A | 918 | +| `Language` | *string* | :heavy_minus_sign: | N/A | English | +| `LanguageTag` | *string* | :heavy_minus_sign: | N/A | en | +| `LanguageCode` | *string* | :heavy_minus_sign: | N/A | eng | +| `BitDepth` | *double* | :heavy_minus_sign: | N/A | 8 | +| `ChromaLocation` | *string* | :heavy_minus_sign: | N/A | left | +| `ChromaSubsampling` | *string* | :heavy_minus_sign: | N/A | 4:2:0 | +| `CodedHeight` | *double* | :heavy_minus_sign: | N/A | 1080 | +| `CodedWidth` | *double* | :heavy_minus_sign: | N/A | 1920 | +| `ColorRange` | *string* | :heavy_minus_sign: | N/A | tv | +| `FrameRate` | *double* | :heavy_minus_sign: | N/A | 25 | +| `Height` | *double* | :heavy_minus_sign: | N/A | 1080 | +| `Level` | *double* | :heavy_minus_sign: | N/A | 120 | +| `Profile` | *string* | :heavy_minus_sign: | N/A | main | +| `RefFrames` | *double* | :heavy_minus_sign: | N/A | 1 | +| `Width` | *double* | :heavy_minus_sign: | N/A | 1920 | +| `DisplayTitle` | *string* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | +| `ExtendedDisplayTitle` | *string* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | \ No newline at end of file diff --git a/docs/Models/Requests/TaskName.md b/docs/Models/Requests/TaskName.md new file mode 100644 index 0000000..bdefa9d --- /dev/null +++ b/docs/Models/Requests/TaskName.md @@ -0,0 +1,23 @@ +# TaskName + +the name of the task to be started. + + +## Values + +| Name | Value | +| --------------------------- | --------------------------- | +| `BackupDatabase` | BackupDatabase | +| `BuildGracenoteCollections` | BuildGracenoteCollections | +| `CheckForUpdates` | CheckForUpdates | +| `CleanOldBundles` | CleanOldBundles | +| `CleanOldCacheFiles` | CleanOldCacheFiles | +| `DeepMediaAnalysis` | DeepMediaAnalysis | +| `GenerateAutoTags` | GenerateAutoTags | +| `GenerateChapterThumbs` | GenerateChapterThumbs | +| `GenerateMediaIndexFiles` | GenerateMediaIndexFiles | +| `OptimizeDatabase` | OptimizeDatabase | +| `RefreshLibraries` | RefreshLibraries | +| `RefreshLocalMedia` | RefreshLocalMedia | +| `RefreshPeriodicMetadata` | RefreshPeriodicMetadata | +| `UpgradeMediaAnalysis` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/Models/Requests/Tonight.md b/docs/Models/Requests/Tonight.md new file mode 100644 index 0000000..1404bfb --- /dev/null +++ b/docs/Models/Requests/Tonight.md @@ -0,0 +1,11 @@ +# Tonight + +Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeSession.md b/docs/Models/Requests/TranscodeSession.md new file mode 100644 index 0000000..c2c2017 --- /dev/null +++ b/docs/Models/Requests/TranscodeSession.md @@ -0,0 +1,29 @@ +# TranscodeSession + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `Key` | *string* | :heavy_minus_sign: | N/A | zz7llzqlx8w9vnrsbnwhbmep | +| `Throttled` | *bool* | :heavy_minus_sign: | N/A | | +| `Complete` | *bool* | :heavy_minus_sign: | N/A | | +| `Progress` | *double* | :heavy_minus_sign: | N/A | 0.4000000059604645 | +| `Size` | *double* | :heavy_minus_sign: | N/A | -22 | +| `Speed` | *double* | :heavy_minus_sign: | N/A | 22.399999618530273 | +| `Error` | *bool* | :heavy_minus_sign: | N/A | | +| `Duration` | *double* | :heavy_minus_sign: | N/A | 2561768 | +| `Context` | *string* | :heavy_minus_sign: | N/A | streaming | +| `SourceVideoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | +| `SourceAudioCodec` | *string* | :heavy_minus_sign: | N/A | ac3 | +| `VideoDecision` | *string* | :heavy_minus_sign: | N/A | transcode | +| `AudioDecision` | *string* | :heavy_minus_sign: | N/A | transcode | +| `Protocol` | *string* | :heavy_minus_sign: | N/A | http | +| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | +| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | +| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | opus | +| `AudioChannels` | *double* | :heavy_minus_sign: | N/A | 2 | +| `TranscodeHwRequested` | *bool* | :heavy_minus_sign: | N/A | | +| `TimeStamp` | *double* | :heavy_minus_sign: | N/A | 1.6818695357764285e+09 | +| `MaxOffsetAvailable` | *double* | :heavy_minus_sign: | N/A | 861.778 | +| `MinOffsetAvailable` | *double* | :heavy_minus_sign: | N/A | 0 | \ No newline at end of file diff --git a/docs/Models/Requests/Type.md b/docs/Models/Requests/Type.md new file mode 100644 index 0000000..0276e44 --- /dev/null +++ b/docs/Models/Requests/Type.md @@ -0,0 +1,12 @@ +# Type + +type of playlist to create + + +## Values + +| Name | Value | +| ------- | ------- | +| `Audio` | audio | +| `Video` | video | +| `Photo` | photo | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlayProgressErrors.md b/docs/Models/Requests/UpdatePlayProgressErrors.md new file mode 100644 index 0000000..88c984d --- /dev/null +++ b/docs/Models/Requests/UpdatePlayProgressErrors.md @@ -0,0 +1,10 @@ +# UpdatePlayProgressErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlayProgressRequest.md b/docs/Models/Requests/UpdatePlayProgressRequest.md new file mode 100644 index 0000000..65778e1 --- /dev/null +++ b/docs/Models/Requests/UpdatePlayProgressRequest.md @@ -0,0 +1,10 @@ +# UpdatePlayProgressRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Key` | *string* | :heavy_check_mark: | the media key | +| `Time` | *double* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | +| `State` | *string* | :heavy_check_mark: | The playback state of the media item. | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlayProgressResponse.md b/docs/Models/Requests/UpdatePlayProgressResponse.md new file mode 100644 index 0000000..0623160 --- /dev/null +++ b/docs/Models/Requests/UpdatePlayProgressResponse.md @@ -0,0 +1,11 @@ +# UpdatePlayProgressResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [UpdatePlayProgressResponseBody](../../Models/Requests/UpdatePlayProgressResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlayProgressResponseBody.md b/docs/Models/Requests/UpdatePlayProgressResponseBody.md new file mode 100644 index 0000000..f98ff98 --- /dev/null +++ b/docs/Models/Requests/UpdatePlayProgressResponseBody.md @@ -0,0 +1,10 @@ +# UpdatePlayProgressResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Errors` | List<[UpdatePlayProgressErrors](../../Models/Requests/UpdatePlayProgressErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlaylistErrors.md b/docs/Models/Requests/UpdatePlaylistErrors.md new file mode 100644 index 0000000..ffd9a42 --- /dev/null +++ b/docs/Models/Requests/UpdatePlaylistErrors.md @@ -0,0 +1,10 @@ +# UpdatePlaylistErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlaylistRequest.md b/docs/Models/Requests/UpdatePlaylistRequest.md new file mode 100644 index 0000000..c2cb24c --- /dev/null +++ b/docs/Models/Requests/UpdatePlaylistRequest.md @@ -0,0 +1,8 @@ +# UpdatePlaylistRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlaylistResponse.md b/docs/Models/Requests/UpdatePlaylistResponse.md new file mode 100644 index 0000000..7fda567 --- /dev/null +++ b/docs/Models/Requests/UpdatePlaylistResponse.md @@ -0,0 +1,11 @@ +# UpdatePlaylistResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [UpdatePlaylistResponseBody](../../Models/Requests/UpdatePlaylistResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlaylistResponseBody.md b/docs/Models/Requests/UpdatePlaylistResponseBody.md new file mode 100644 index 0000000..c3339d5 --- /dev/null +++ b/docs/Models/Requests/UpdatePlaylistResponseBody.md @@ -0,0 +1,10 @@ +# UpdatePlaylistResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[UpdatePlaylistErrors](../../Models/Requests/UpdatePlaylistErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/UploadPlaylistErrors.md b/docs/Models/Requests/UploadPlaylistErrors.md new file mode 100644 index 0000000..0d9ae04 --- /dev/null +++ b/docs/Models/Requests/UploadPlaylistErrors.md @@ -0,0 +1,10 @@ +# UploadPlaylistErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | *double* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | *double* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Requests/UploadPlaylistRequest.md b/docs/Models/Requests/UploadPlaylistRequest.md new file mode 100644 index 0000000..faf7271 --- /dev/null +++ b/docs/Models/Requests/UploadPlaylistRequest.md @@ -0,0 +1,9 @@ +# UploadPlaylistRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Path` | *string* | :heavy_check_mark: | absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
| /home/barkley/playlist.m3u | +| `Force` | [Force](../../Models/Requests/Force.md) | :heavy_check_mark: | force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| | \ No newline at end of file diff --git a/docs/Models/Requests/UploadPlaylistResponse.md b/docs/Models/Requests/UploadPlaylistResponse.md new file mode 100644 index 0000000..422ac82 --- /dev/null +++ b/docs/Models/Requests/UploadPlaylistResponse.md @@ -0,0 +1,11 @@ +# UploadPlaylistResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [UploadPlaylistResponseBody](../../Models/Requests/UploadPlaylistResponseBody.md) | :heavy_minus_sign: | Unauthorized - Returned if the X-Plex-Token is missing from the header or query. | \ No newline at end of file diff --git a/docs/Models/Requests/UploadPlaylistResponseBody.md b/docs/Models/Requests/UploadPlaylistResponseBody.md new file mode 100644 index 0000000..fb633de --- /dev/null +++ b/docs/Models/Requests/UploadPlaylistResponseBody.md @@ -0,0 +1,10 @@ +# UploadPlaylistResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Errors` | List<[UploadPlaylistErrors](../../Models/Requests/UploadPlaylistErrors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Upscale.md b/docs/Models/Requests/Upscale.md new file mode 100644 index 0000000..d87109c --- /dev/null +++ b/docs/Models/Requests/Upscale.md @@ -0,0 +1,11 @@ +# Upscale + +allow images to be resized beyond native dimensions. + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Writer.md b/docs/Models/Requests/Writer.md new file mode 100644 index 0000000..f0739c3 --- /dev/null +++ b/docs/Models/Requests/Writer.md @@ -0,0 +1,8 @@ +# Writer + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_minus_sign: | N/A | Jeff Loveness | \ No newline at end of file diff --git a/docs/sdks/activities/README.md b/docs/sdks/activities/README.md new file mode 100644 index 0000000..60c791e --- /dev/null +++ b/docs/sdks/activities/README.md @@ -0,0 +1,77 @@ +# Activities +(*Activities*) + +## Overview + +Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. +Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity. +Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details: +- They can contain a `progress` (from 0 to 100) marking the percent completion of the activity. +- They must contain an `type` which is used by clients to distinguish the specific activity. +- They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.) +- The may contain a `Response` object which attributes which represent the result of the asynchronous operation. + + +### Available Operations + +* [GetServerActivities](#getserveractivities) - Get Server Activities +* [CancelServerActivities](#cancelserveractivities) - Cancel Server Activities + +## GetServerActivities + +Get Server Activities + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Activities.GetServerActivitiesAsync(); + +// handle response +``` + + +### Response + +**[GetServerActivitiesResponse](../../Models/Requests/GetServerActivitiesResponse.md)** + + +## CancelServerActivities + +Cancel Server Activities + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Activities.CancelServerActivitiesAsync(ActivityUUID: "string"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `ActivityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | + + +### Response + +**[CancelServerActivitiesResponse](../../Models/Requests/CancelServerActivitiesResponse.md)** + diff --git a/docs/sdks/butler/README.md b/docs/sdks/butler/README.md new file mode 100644 index 0000000..6002ff7 --- /dev/null +++ b/docs/sdks/butler/README.md @@ -0,0 +1,171 @@ +# Butler +(*Butler*) + +## Overview + +Butler is the task manager of the Plex Media Server Ecosystem. + + +### Available Operations + +* [GetButlerTasks](#getbutlertasks) - Get Butler tasks +* [StartAllTasks](#startalltasks) - Start all Butler tasks +* [StopAllTasks](#stopalltasks) - Stop all Butler tasks +* [StartTask](#starttask) - Start a single Butler task +* [StopTask](#stoptask) - Stop a single Butler task + +## GetButlerTasks + +Returns a list of butler tasks + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Butler.GetButlerTasksAsync(); + +// handle response +``` + + +### Response + +**[GetButlerTasksResponse](../../Models/Requests/GetButlerTasksResponse.md)** + + +## StartAllTasks + +This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: +1. Any tasks not scheduled to run on the current day will be skipped. +2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. +3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. +4. If we are outside the configured window, the task will start immediately. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Butler.StartAllTasksAsync(); + +// handle response +``` + + +### Response + +**[StartAllTasksResponse](../../Models/Requests/StartAllTasksResponse.md)** + + +## StopAllTasks + +This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Butler.StopAllTasksAsync(); + +// handle response +``` + + +### Response + +**[StopAllTasksResponse](../../Models/Requests/StopAllTasksResponse.md)** + + +## StartTask + +This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: +1. Any tasks not scheduled to run on the current day will be skipped. +2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. +3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. +4. If we are outside the configured window, the task will start immediately. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Butler.StartTaskAsync(TaskName: TaskName.CleanOldBundles); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `TaskName` | [TaskName](../../Models/Requests/TaskName.md) | :heavy_check_mark: | the name of the task to be started. | + + +### Response + +**[StartTaskResponse](../../Models/Requests/StartTaskResponse.md)** + + +## StopTask + +This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Butler.StopTaskAsync(TaskName: PathParamTaskName.BackupDatabase); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `TaskName` | [PathParamTaskName](../../Models/Requests/PathParamTaskName.md) | :heavy_check_mark: | The name of the task to be started. | + + +### Response + +**[StopTaskResponse](../../Models/Requests/StopTaskResponse.md)** + diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md new file mode 100644 index 0000000..4d5e572 --- /dev/null +++ b/docs/sdks/hubs/README.md @@ -0,0 +1,82 @@ +# Hubs +(*Hubs*) + +## Overview + +Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows. + + +### Available Operations + +* [GetGlobalHubs](#getglobalhubs) - Get Global Hubs +* [GetLibraryHubs](#getlibraryhubs) - Get library specific hubs + +## GetGlobalHubs + +Get Global Hubs filtered by the parameters provided. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Hubs.GetGlobalHubsAsync(Count: 1262.49D, OnlyTransient: OnlyTransient.One); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Count` | *double* | :heavy_minus_sign: | The number of items to return with each hub. | +| `OnlyTransient` | [OnlyTransient](../../Models/Requests/OnlyTransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | + + +### Response + +**[GetGlobalHubsResponse](../../Models/Requests/GetGlobalHubsResponse.md)** + + +## GetLibraryHubs + +This endpoint will return a list of library specific hubs + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Hubs.GetLibraryHubsAsync(SectionId: 6728.76D, Count: 9010.22D, OnlyTransient: QueryParamOnlyTransient.Zero); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Count` | *double* | :heavy_minus_sign: | The number of items to return with each hub. | +| `OnlyTransient` | [QueryParamOnlyTransient](../../Models/Requests/QueryParamOnlyTransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | + + +### Response + +**[GetLibraryHubsResponse](../../Models/Requests/GetLibraryHubsResponse.md)** + diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md new file mode 100644 index 0000000..bed210d --- /dev/null +++ b/docs/sdks/library/README.md @@ -0,0 +1,438 @@ +# Library +(*Library*) + +## Overview + +API Calls interacting with Plex Media Server Libraries + + +### Available Operations + +* [GetFileHash](#getfilehash) - Get Hash Value +* [GetRecentlyAdded](#getrecentlyadded) - Get Recently Added +* [GetLibraries](#getlibraries) - Get All Libraries +* [GetLibrary](#getlibrary) - Get Library Details +* [DeleteLibrary](#deletelibrary) - Delete Library Section +* [GetLibraryItems](#getlibraryitems) - Get Library Items +* [RefreshLibrary](#refreshlibrary) - Refresh Library +* [GetLatestLibraryItems](#getlatestlibraryitems) - Get Latest Library Items +* [GetCommonLibraryItems](#getcommonlibraryitems) - Get Common Library Items +* [GetMetadata](#getmetadata) - Get Items Metadata +* [GetMetadataChildren](#getmetadatachildren) - Get Items Children +* [GetOnDeck](#getondeck) - Get On Deck + +## GetFileHash + +This resource returns hash values for local files + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetFileHashAsync(Url: "file://C:\Image.png&type=13", Type: 4462.17D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `Url` | *string* | :heavy_check_mark: | This is the path to the local file, must be prefixed by `file://` | file://C:\Image.png&type=13 | +| `Type` | *double* | :heavy_minus_sign: | Item type | | + + +### Response + +**[GetFileHashResponse](../../Models/Requests/GetFileHashResponse.md)** + + +## GetRecentlyAdded + +This endpoint will return the recently added content. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetRecentlyAddedAsync(); + +// handle response +``` + + +### Response + +**[GetRecentlyAddedResponse](../../Models/Requests/GetRecentlyAddedResponse.md)** + + +## GetLibraries + +A library section (commonly referred to as just a library) is a collection of media. +Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. +For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. + +Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. +This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetLibrariesAsync(); + +// handle response +``` + + +### Response + +**[GetLibrariesResponse](../../Models/Requests/GetLibrariesResponse.md)** + + +## GetLibrary + +Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. These details are: + +- A list of `Directory` objects: These used to be used by clients to build a menuing system. There are four flavors of directory found here: + - Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. + - Secondary: These are marked with `secondary="1"` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. + - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `search="1"` which used to be used to allow clients to build search dialogs on the fly. +- A list of `Type` objects: These represent the types of things found in this library, and for each one, a list of `Filter` and `Sort` objects. These can be used to build rich controls around a grid of media to allow filtering and organizing. Note that these filters and sorts are optional, and without them, the client won't render any filtering controls. The `Type` object contains: + - `key`: This provides the root endpoint returning the actual media list for the type. + - `type`: This is the metadata type for the type (if a standard Plex type). + - `title`: The title for for the content of this type (e.g. "Movies"). +- Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an inportant subset useful for top-level API. + - `filter`: This represents the filter name used for the filter, which can be used to construct complex media queries with. + - `filterType`: This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter. + - `key`: This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element. + - `title`: The title for the filter. +- Each `Sort` object contains a description of the sort field. + - `defaultDirection`: Can be either `asc` or `desc`, and specifies the default direction for the sort field (e.g. titles default to alphabetically ascending). + - `descKey` and `key`: Contains the parameters passed to the `sort=...` media query for each direction of the sort. + - `title`: The title of the field. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetLibraryAsync(SectionId: 1000D, IncludeDetails: IncludeDetails.Zero); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | 1000 | +| `IncludeDetails` | [IncludeDetails](../../Models/Requests/IncludeDetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts).
Only exists for backwards compatibility, media providers other than the server libraries have it on always.
| | + + +### Response + +**[GetLibraryResponse](../../Models/Requests/GetLibraryResponse.md)** + + +## DeleteLibrary + +Delate a library using a specific section + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.DeleteLibraryAsync(SectionId: 1000D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | 1000 | + + +### Response + +**[DeleteLibraryResponse](../../Models/Requests/DeleteLibraryResponse.md)** + + +## GetLibraryItems + +This endpoint will return a list of library items filtered by the filter and type provided + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetLibraryItemsAsync(SectionId: 4510.92D, Type: 760.66D, Filter: "string"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Type` | *double* | :heavy_minus_sign: | item type | +| `Filter` | *string* | :heavy_minus_sign: | the filter parameter | + + +### Response + +**[GetLibraryItemsResponse](../../Models/Requests/GetLibraryItemsResponse.md)** + + +## RefreshLibrary + +This endpoint Refreshes the library. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.RefreshLibraryAsync(SectionId: 934.16D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to refresh | + + +### Response + +**[RefreshLibraryResponse](../../Models/Requests/RefreshLibraryResponse.md)** + + +## GetLatestLibraryItems + +This endpoint will return a list of the latest library items filtered by the filter and type provided + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetLatestLibraryItemsAsync(SectionId: 7171.54D, Type: 8015.12D, Filter: "string"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Type` | *double* | :heavy_check_mark: | item type | +| `Filter` | *string* | :heavy_minus_sign: | the filter parameter | + + +### Response + +**[GetLatestLibraryItemsResponse](../../Models/Requests/GetLatestLibraryItemsResponse.md)** + + +## GetCommonLibraryItems + +Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetCommonLibraryItemsAsync(SectionId: 2710.37D, Type: 2760.31D, Filter: "string"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `SectionId` | *double* | :heavy_check_mark: | the Id of the library to query | +| `Type` | *double* | :heavy_check_mark: | item type | +| `Filter` | *string* | :heavy_minus_sign: | the filter parameter | + + +### Response + +**[GetCommonLibraryItemsResponse](../../Models/Requests/GetCommonLibraryItemsResponse.md)** + + +## GetMetadata + +This endpoint will return the metadata of a library item specified with the ratingKey. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetMetadataAsync(RatingKey: 8382.31D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `RatingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. | + + +### Response + +**[GetMetadataResponse](../../Models/Requests/GetMetadataResponse.md)** + + +## GetMetadataChildren + +This endpoint will return the children of of a library item specified with the ratingKey. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetMetadataChildrenAsync(RatingKey: 1539.14D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `RatingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. | + + +### Response + +**[GetMetadataChildrenResponse](../../Models/Requests/GetMetadataChildrenResponse.md)** + + +## GetOnDeck + +This endpoint will return the on deck content. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Library.GetOnDeckAsync(); + +// handle response +``` + + +### Response + +**[GetOnDeckResponse](../../Models/Requests/GetOnDeckResponse.md)** + diff --git a/docs/sdks/log/README.md b/docs/sdks/log/README.md new file mode 100644 index 0000000..8730d10 --- /dev/null +++ b/docs/sdks/log/README.md @@ -0,0 +1,103 @@ +# Log +(*Log*) + +## Overview + +Submit logs to the Log Handler for Plex Media Server + + +### Available Operations + +* [LogLine](#logline) - Logging a single line message. +* [LogMultiLine](#logmultiline) - Logging a multi-line message +* [EnablePaperTrail](#enablepapertrail) - Enabling Papertrail + +## LogLine + +This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Log.LogLineAsync(Level: Level.Three, Message: "string", Source: "string"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `Level` | [Level](../../Models/Requests/Level.md) | :heavy_check_mark: | An integer log level to write to the PMS log with.
0: Error
1: Warning
2: Info
3: Debug
4: Verbose
| | +| `Message` | *string* | :heavy_check_mark: | The text of the message to write to the log. | | +| `Source` | *string* | :heavy_check_mark: | a string indicating the source of the message. | | + + +### Response + +**[LogLineResponse](../../Models/Requests/LogLineResponse.md)** + + +## LogMultiLine + +This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above GET endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Log.LogMultiLineAsync(); + +// handle response +``` + + +### Response + +**[LogMultiLineResponse](../../Models/Requests/LogMultiLineResponse.md)** + + +## EnablePaperTrail + +This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Log.EnablePaperTrailAsync(); + +// handle response +``` + + +### Response + +**[EnablePaperTrailResponse](../../Models/Requests/EnablePaperTrailResponse.md)** + diff --git a/docs/sdks/media/README.md b/docs/sdks/media/README.md new file mode 100644 index 0000000..74602a2 --- /dev/null +++ b/docs/sdks/media/README.md @@ -0,0 +1,115 @@ +# Media +(*Media*) + +## Overview + +API Calls interacting with Plex Media Server Media + + +### Available Operations + +* [MarkPlayed](#markplayed) - Mark Media Played +* [MarkUnplayed](#markunplayed) - Mark Media Unplayed +* [UpdatePlayProgress](#updateplayprogress) - Update Media Play Progress + +## MarkPlayed + +This will mark the provided media key as Played. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Media.MarkPlayedAsync(Key: 59398D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Key` | *double* | :heavy_check_mark: | The media key to mark as played | 59398 | + + +### Response + +**[MarkPlayedResponse](../../Models/Requests/MarkPlayedResponse.md)** + + +## MarkUnplayed + +This will mark the provided media key as Unplayed. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Media.MarkUnplayedAsync(Key: 59398D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `Key` | *double* | :heavy_check_mark: | The media key to mark as Unplayed | 59398 | + + +### Response + +**[MarkUnplayedResponse](../../Models/Requests/MarkUnplayedResponse.md)** + + +## UpdatePlayProgress + +This API command can be used to update the play progress of a media item. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Media.UpdatePlayProgressAsync(Key: "string", Time: 6900.91D, State: "string"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Key` | *string* | :heavy_check_mark: | the media key | +| `Time` | *double* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | +| `State` | *string* | :heavy_check_mark: | The playback state of the media item. | + + +### Response + +**[UpdatePlayProgressResponse](../../Models/Requests/UpdatePlayProgressResponse.md)** + diff --git a/docs/sdks/playlists/README.md b/docs/sdks/playlists/README.md new file mode 100644 index 0000000..5b5087e --- /dev/null +++ b/docs/sdks/playlists/README.md @@ -0,0 +1,345 @@ +# Playlists +(*Playlists*) + +## Overview + +Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017"). +They can be organized in (optionally nesting) folders. +Retrieving a playlist, or its items, will trigger a refresh of its metadata. +This may cause the duration and number of items to change. + + +### Available Operations + +* [CreatePlaylist](#createplaylist) - Create a Playlist +* [GetPlaylists](#getplaylists) - Get All Playlists +* [GetPlaylist](#getplaylist) - Retrieve Playlist +* [DeletePlaylist](#deleteplaylist) - Deletes a Playlist +* [UpdatePlaylist](#updateplaylist) - Update a Playlist +* [GetPlaylistContents](#getplaylistcontents) - Retrieve Playlist Contents +* [ClearPlaylistContents](#clearplaylistcontents) - Delete Playlist Contents +* [AddPlaylistContents](#addplaylistcontents) - Adding to a Playlist +* [UploadPlaylist](#uploadplaylist) - Upload Playlist + +## CreatePlaylist + +Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass: +- `uri` - The content URI for what we're playing (e.g. `library://...`). +- `playQueueID` - To create a playlist from an existing play queue. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +CreatePlaylistRequest req = new CreatePlaylistRequest() { + Title = "string", + Type = Type.Photo, + Smart = Smart.One, +}; + +var res = await sdk.Playlists.CreatePlaylistAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [CreatePlaylistRequest](../../Models/Requests/CreatePlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. | + + +### Response + +**[CreatePlaylistResponse](../../Models/Requests/CreatePlaylistResponse.md)** + + +## GetPlaylists + +Get All Playlists given the specified filters. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.GetPlaylistsAsync(PlaylistType: PlaylistType.Audio, Smart: QueryParamSmart.Zero); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `PlaylistType` | [PlaylistType](../../Models/Requests/PlaylistType.md) | :heavy_minus_sign: | limit to a type of playlist. | +| `Smart` | [QueryParamSmart](../../Models/Requests/QueryParamSmart.md) | :heavy_minus_sign: | type of playlists to return (default is all). | + + +### Response + +**[GetPlaylistsResponse](../../Models/Requests/GetPlaylistsResponse.md)** + + +## GetPlaylist + +Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: +Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.GetPlaylistAsync(PlaylistID: 4109.48D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | + + +### Response + +**[GetPlaylistResponse](../../Models/Requests/GetPlaylistResponse.md)** + + +## DeletePlaylist + +This endpoint will delete a playlist + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.DeletePlaylistAsync(PlaylistID: 216.22D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | + + +### Response + +**[DeletePlaylistResponse](../../Models/Requests/DeletePlaylistResponse.md)** + + +## UpdatePlaylist + +From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}` + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.UpdatePlaylistAsync(PlaylistID: 3915D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | + + +### Response + +**[UpdatePlaylistResponse](../../Models/Requests/UpdatePlaylistResponse.md)** + + +## GetPlaylistContents + +Gets the contents of a playlist. Should be paged by clients via standard mechanisms. +By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. +For example, you could use this to display a list of recently added albums vis a smart playlist. +Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.GetPlaylistContentsAsync(PlaylistID: 5004.46D, Type: 9403.59D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | +| `Type` | *double* | :heavy_check_mark: | the metadata type of the item to return | + + +### Response + +**[GetPlaylistContentsResponse](../../Models/Requests/GetPlaylistContentsResponse.md)** + + +## ClearPlaylistContents + +Clears a playlist, only works with dumb playlists. Returns the playlist. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.ClearPlaylistContentsAsync(PlaylistID: 1893.18D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | + + +### Response + +**[ClearPlaylistContentsResponse](../../Models/Requests/ClearPlaylistContentsResponse.md)** + + +## AddPlaylistContents + +Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. +With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.AddPlaylistContentsAsync(PlaylistID: 8502.01D, Uri: "library://..", PlayQueueID: 123D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | | +| `Uri` | *string* | :heavy_check_mark: | the content URI for the playlist | library://.. | +| `PlayQueueID` | *double* | :heavy_check_mark: | the play queue to add to a playlist | 123 | + + +### Response + +**[AddPlaylistContentsResponse](../../Models/Requests/AddPlaylistContentsResponse.md)** + + +## UploadPlaylist + +Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Playlists.UploadPlaylistAsync(Path: "/home/barkley/playlist.m3u", Force: Force.Zero); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Path` | *string* | :heavy_check_mark: | absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
| /home/barkley/playlist.m3u | +| `Force` | [Force](../../Models/Requests/Force.md) | :heavy_check_mark: | force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| | + + +### Response + +**[UploadPlaylistResponse](../../Models/Requests/UploadPlaylistResponse.md)** + diff --git a/docs/sdks/plexapi/README.md b/docs/sdks/plexapi/README.md new file mode 100644 index 0000000..8ee580c --- /dev/null +++ b/docs/sdks/plexapi/README.md @@ -0,0 +1,9 @@ +# PlexAPI SDK + + +## Overview + +An Open API Spec for interacting with Plex.tv and Plex Servers + +### Available Operations + diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md new file mode 100644 index 0000000..02a1eb6 --- /dev/null +++ b/docs/sdks/search/README.md @@ -0,0 +1,132 @@ +# Search +(*Search*) + +## Overview + +API Calls that perform search operations with Plex Media Server + + +### Available Operations + +* [PerformSearch](#performsearch) - Perform a search +* [PerformVoiceSearch](#performvoicesearch) - Perform a voice search +* [GetSearchResults](#getsearchresults) - Get Search Results + +## PerformSearch + +This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor). + +In the response's items, the following extra attributes are returned to further describe or disambiguate the result: + +- `reason`: The reason for the result, if not because of a direct search term match; can be either: + - `section`: There are multiple identical results from different sections. + - `originalTitle`: There was a search term match from the original title field (sometimes those can be very different or in a foreign language). + - ``: If the reason for the result is due to a result in another hub, the source hub identifier is returned. For example, if the search is for "dylan" then Bob Dylan may be returned as an artist result, an a few of his albums returned as album results with a reason code of `artist` (the identifier of that particular hub). Or if the search is for "arnold", there might be movie results returned with a reason of `actor` +- `reasonTitle`: The string associated with the reason code. For a section reason, it'll be the section name; For a hub identifier, it'll be a string associated with the match (e.g. `Arnold Schwarzenegger` for movies which were returned because the search was for "arnold"). +- `reasonID`: The ID of the item associated with the reason for the result. This might be a section ID, a tag ID, an artist ID, or a show ID. + +This request is intended to be very fast, and called as the user types. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Search.PerformSearchAsync(Query: "dylan", SectionId: 1516.53D, Limit: 5D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Query` | *string* | :heavy_check_mark: | The query term | arnold | +| `SectionId` | *double* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | +| `Limit` | *double* | :heavy_minus_sign: | The number of items to return per hub | 5 | + + +### Response + +**[PerformSearchResponse](../../Models/Requests/PerformSearchResponse.md)** + + +## PerformVoiceSearch + +This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. +It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. +Whenever possible, clients should limit the search to the appropriate type. +Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Search.PerformVoiceSearchAsync(Query: "dead+poop", SectionId: 4094.8D, Limit: 5D); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Query` | *string* | :heavy_check_mark: | The query term | dead+poop | +| `SectionId` | *double* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | +| `Limit` | *double* | :heavy_minus_sign: | The number of items to return per hub | 5 | + + +### Response + +**[PerformVoiceSearchResponse](../../Models/Requests/PerformVoiceSearchResponse.md)** + + +## GetSearchResults + +This will search the database for the string provided. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Search.GetSearchResultsAsync(Query: "110"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `Query` | *string* | :heavy_check_mark: | The search query string to use | 110 | + + +### Response + +**[GetSearchResultsResponse](../../Models/Requests/GetSearchResultsResponse.md)** + diff --git a/docs/sdks/security/README.md b/docs/sdks/security/README.md new file mode 100644 index 0000000..5047c3f --- /dev/null +++ b/docs/sdks/security/README.md @@ -0,0 +1,82 @@ +# Security +(*Security*) + +## Overview + +API Calls against Security for Plex Media Server + + +### Available Operations + +* [GetTransientToken](#gettransienttoken) - Get a Transient Token. +* [GetSourceConnectionInformation](#getsourceconnectioninformation) - Get Source Connection Information + +## GetTransientToken + +This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Security.GetTransientTokenAsync(Type: QueryParamType.Delegation, Scope: Scope.All); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Type` | [QueryParamType](../../Models/Requests/QueryParamType.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. | +| `Scope` | [Scope](../../Models/Requests/Scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. | + + +### Response + +**[GetTransientTokenResponse](../../Models/Requests/GetTransientTokenResponse.md)** + + +## GetSourceConnectionInformation + +If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. +Note: requires Plex Media Server >= 1.15.4. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Security.GetSourceConnectionInformationAsync(Source: "server://client-identifier"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `Source` | *string* | :heavy_check_mark: | The source identifier with an included prefix. | server://client-identifier | + + +### Response + +**[GetSourceConnectionInformationResponse](../../Models/Requests/GetSourceConnectionInformationResponse.md)** + diff --git a/docs/sdks/server/README.md b/docs/sdks/server/README.md new file mode 100644 index 0000000..c1908ee --- /dev/null +++ b/docs/sdks/server/README.md @@ -0,0 +1,244 @@ +# Server +(*Server*) + +## Overview + +Operations against the Plex Media Server System. + + +### Available Operations + +* [GetServerCapabilities](#getservercapabilities) - Server Capabilities +* [GetServerPreferences](#getserverpreferences) - Get Server Preferences +* [GetAvailableClients](#getavailableclients) - Get Available Clients +* [GetDevices](#getdevices) - Get Devices +* [GetServerIdentity](#getserveridentity) - Get Server Identity +* [GetMyPlexAccount](#getmyplexaccount) - Get MyPlex Account +* [GetResizedPhoto](#getresizedphoto) - Get a Resized Photo +* [GetServerList](#getserverlist) - Get Server List + +## GetServerCapabilities + +Server Capabilities + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetServerCapabilitiesAsync(); + +// handle response +``` + + +### Response + +**[GetServerCapabilitiesResponse](../../Models/Requests/GetServerCapabilitiesResponse.md)** + + +## GetServerPreferences + +Get Server Preferences + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetServerPreferencesAsync(); + +// handle response +``` + + +### Response + +**[GetServerPreferencesResponse](../../Models/Requests/GetServerPreferencesResponse.md)** + + +## GetAvailableClients + +Get Available Clients + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetAvailableClientsAsync(); + +// handle response +``` + + +### Response + +**[GetAvailableClientsResponse](../../Models/Requests/GetAvailableClientsResponse.md)** + + +## GetDevices + +Get Devices + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetDevicesAsync(); + +// handle response +``` + + +### Response + +**[GetDevicesResponse](../../Models/Requests/GetDevicesResponse.md)** + + +## GetServerIdentity + +Get Server Identity + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetServerIdentityAsync(); + +// handle response +``` + + +### Response + +**[GetServerIdentityResponse](../../Models/Requests/GetServerIdentityResponse.md)** + + +## GetMyPlexAccount + +Returns MyPlex Account Information + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetMyPlexAccountAsync(); + +// handle response +``` + + +### Response + +**[GetMyPlexAccountResponse](../../Models/Requests/GetMyPlexAccountResponse.md)** + + +## GetResizedPhoto + +Plex's Photo transcoder is used throughout the service to serve images at specified sizes. + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +GetResizedPhotoRequest req = new GetResizedPhotoRequest() { + Width = 110D, + Height = 165D, + Opacity = 643869, + Blur = 4000D, + MinSize = MinSize.Zero, + Upscale = Upscale.Zero, + Url = "/library/metadata/49564/thumb/1654258204", +}; + +var res = await sdk.Server.GetResizedPhotoAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetResizedPhotoRequest](../../Models/Requests/GetResizedPhotoRequest.md) | :heavy_check_mark: | The request object to use for the request. | + + +### Response + +**[GetResizedPhotoResponse](../../Models/Requests/GetResizedPhotoResponse.md)** + + +## GetServerList + +Get Server List + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Server.GetServerListAsync(); + +// handle response +``` + + +### Response + +**[GetServerListResponse](../../Models/Requests/GetServerListResponse.md)** + diff --git a/docs/sdks/sessions/README.md b/docs/sdks/sessions/README.md new file mode 100644 index 0000000..7852505 --- /dev/null +++ b/docs/sdks/sessions/README.md @@ -0,0 +1,125 @@ +# Sessions +(*Sessions*) + +## Overview + +API Calls that perform search operations with Plex Media Server Sessions + + +### Available Operations + +* [GetSessions](#getsessions) - Get Active Sessions +* [GetSessionHistory](#getsessionhistory) - Get Session History +* [GetTranscodeSessions](#gettranscodesessions) - Get Transcode Sessions +* [StopTranscodeSession](#stoptranscodesession) - Stop a Transcode Session + +## GetSessions + +This will retrieve the "Now Playing" Information of the PMS. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Sessions.GetSessionsAsync(); + +// handle response +``` + + +### Response + +**[GetSessionsResponse](../../Models/Requests/GetSessionsResponse.md)** + + +## GetSessionHistory + +This will Retrieve a listing of all history views. + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Sessions.GetSessionHistoryAsync(); + +// handle response +``` + + +### Response + +**[GetSessionHistoryResponse](../../Models/Requests/GetSessionHistoryResponse.md)** + + +## GetTranscodeSessions + +Get Transcode Sessions + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Sessions.GetTranscodeSessionsAsync(); + +// handle response +``` + + +### Response + +**[GetTranscodeSessionsResponse](../../Models/Requests/GetTranscodeSessionsResponse.md)** + + +## StopTranscodeSession + +Stop a Transcode Session + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Sessions.StopTranscodeSessionAsync(SessionKey: "zz7llzqlx8w9vnrsbnwhbmep"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `SessionKey` | *string* | :heavy_check_mark: | the Key of the transcode session to stop | zz7llzqlx8w9vnrsbnwhbmep | + + +### Response + +**[StopTranscodeSessionResponse](../../Models/Requests/StopTranscodeSessionResponse.md)** + diff --git a/docs/sdks/updater/README.md b/docs/sdks/updater/README.md new file mode 100644 index 0000000..c07d360 --- /dev/null +++ b/docs/sdks/updater/README.md @@ -0,0 +1,108 @@ +# Updater +(*Updater*) + +## Overview + +This describes the API for searching and applying updates to the Plex Media Server. +Updates to the status can be observed via the Event API. + + +### Available Operations + +* [GetUpdateStatus](#getupdatestatus) - Querying status of updates +* [CheckForUpdates](#checkforupdates) - Checking for updates +* [ApplyUpdates](#applyupdates) - Apply Updates + +## GetUpdateStatus + +Querying status of updates + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Updater.GetUpdateStatusAsync(); + +// handle response +``` + + +### Response + +**[GetUpdateStatusResponse](../../Models/Requests/GetUpdateStatusResponse.md)** + + +## CheckForUpdates + +Checking for updates + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Updater.CheckForUpdatesAsync(Download: Download.One); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Download` | [Download](../../Models/Requests/Download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | + + +### Response + +**[CheckForUpdatesResponse](../../Models/Requests/CheckForUpdatesResponse.md)** + + +## ApplyUpdates + +Note that these two parameters are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed + + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +var res = await sdk.Updater.ApplyUpdatesAsync(Tonight: Tonight.One, Skip: Skip.Zero); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Tonight` | [Tonight](../../Models/Requests/Tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | +| `Skip` | [Skip](../../Models/Requests/Skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. | + + +### Response + +**[ApplyUpdatesResponse](../../Models/Requests/ApplyUpdatesResponse.md)** + diff --git a/docs/sdks/video/README.md b/docs/sdks/video/README.md new file mode 100644 index 0000000..ee982be --- /dev/null +++ b/docs/sdks/video/README.md @@ -0,0 +1,99 @@ +# Video +(*Video*) + +## Overview + +API Calls that perform operations with Plex Media Server Videos + + +### Available Operations + +* [StartUniversalTranscode](#startuniversaltranscode) - Start Universal Transcode +* [GetTimeline](#gettimeline) - Get the timeline for a media item + +## StartUniversalTranscode + +Begin a Universal Transcode Session + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +StartUniversalTranscodeRequest req = new StartUniversalTranscodeRequest() { + HasMDE = 8924.99D, + Path = "/etc/mail", + MediaIndex = 9962.95D, + PartIndex = 1232.82D, + Protocol = "string", +}; + +var res = await sdk.Video.StartUniversalTranscodeAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `request` | [StartUniversalTranscodeRequest](../../Models/Requests/StartUniversalTranscodeRequest.md) | :heavy_check_mark: | The request object to use for the request. | + + +### Response + +**[StartUniversalTranscodeResponse](../../Models/Requests/StartUniversalTranscodeResponse.md)** + + +## GetTimeline + +Get the timeline for a media item + +### Example Usage + +```csharp +using PlexAPI; +using PlexAPI.Models.Components; +using PlexAPI.Models.Requests; + +var sdk = new PlexAPISDK( + security: new Models.Components.Security() { + AccessToken = "", + }); + +GetTimelineRequest req = new GetTimelineRequest() { + RatingKey = 716.56D, + Key = "", + State = State.Paused, + HasMDE = 7574.33D, + Time = 3327.51D, + Duration = 7585.39D, + Context = "string", + PlayQueueItemID = 1406.21D, + PlayBackTime = 2699.34D, + Row = 3536.42D, +}; + +var res = await sdk.Video.GetTimelineAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [GetTimelineRequest](../../Models/Requests/GetTimelineRequest.md) | :heavy_check_mark: | The request object to use for the request. | + + +### Response + +**[GetTimelineResponse](../../Models/Requests/GetTimelineResponse.md)** + diff --git a/files.gen b/files.gen new file mode 100644 index 0000000..7c37a95 --- /dev/null +++ b/files.gen @@ -0,0 +1,616 @@ +PlexAPI/Server.cs +PlexAPI/Media.cs +PlexAPI/Activities.cs +PlexAPI/Butler.cs +PlexAPI/Hubs.cs +PlexAPI/Search.cs +PlexAPI/Library.cs +PlexAPI/Log.cs +PlexAPI/Playlists.cs +PlexAPI/Security.cs +PlexAPI/Sessions.cs +PlexAPI/Updater.cs +PlexAPI/Video.cs +PlexAPI/PlexAPISDK.cs +PlexAPI/Utils/BigIntSerializer.cs +PlexAPI/Utils/DecimalSerializer.cs +PlexAPI/Utils/EnumSerializer.cs +PlexAPI/Utils/FlexibleObjectDeserializer.cs +PlexAPI/Utils/HeaderSerializer.cs +PlexAPI/Utils/IsoDateTimeSerializer.cs +PlexAPI/Utils/RequestBodySerializer.cs +PlexAPI/Utils/SecuritySerializer.cs +PlexAPI/Utils/SpeakeasyHttpClient.cs +PlexAPI/Utils/SpeakeasyMetadata.cs +PlexAPI/Utils/URLBuilder.cs +PlexAPI/Utils/Utilities.cs +PlexAPI/PlexAPI.csproj +PlexAPI.sln +PlexAPI/Models/Requests/Errors.cs +PlexAPI/Models/Requests/GetServerCapabilitiesServerResponseBody.cs +PlexAPI/Models/Requests/Directory.cs +PlexAPI/Models/Requests/MediaContainer.cs +PlexAPI/Models/Requests/GetServerCapabilitiesResponseBody.cs +PlexAPI/Models/Requests/GetServerCapabilitiesResponse.cs +PlexAPI/Models/Requests/GetServerPreferencesErrors.cs +PlexAPI/Models/Requests/GetServerPreferencesResponseBody.cs +PlexAPI/Models/Requests/GetServerPreferencesResponse.cs +PlexAPI/Models/Requests/GetAvailableClientsErrors.cs +PlexAPI/Models/Requests/GetAvailableClientsResponseBody.cs +PlexAPI/Models/Requests/Server.cs +PlexAPI/Models/Requests/GetAvailableClientsMediaContainer.cs +PlexAPI/Models/Requests/ResponseBody.cs +PlexAPI/Models/Requests/GetAvailableClientsResponse.cs +PlexAPI/Models/Requests/GetDevicesErrors.cs +PlexAPI/Models/Requests/GetDevicesServerResponseBody.cs +PlexAPI/Models/Requests/Device.cs +PlexAPI/Models/Requests/GetDevicesMediaContainer.cs +PlexAPI/Models/Requests/GetDevicesResponseBody.cs +PlexAPI/Models/Requests/GetDevicesResponse.cs +PlexAPI/Models/Requests/GetServerIdentityErrors.cs +PlexAPI/Models/Requests/GetServerIdentityServerResponseBody.cs +PlexAPI/Models/Requests/GetServerIdentityMediaContainer.cs +PlexAPI/Models/Requests/GetServerIdentityResponseBody.cs +PlexAPI/Models/Requests/GetServerIdentityResponse.cs +PlexAPI/Models/Requests/GetMyPlexAccountErrors.cs +PlexAPI/Models/Requests/GetMyPlexAccountServerResponseBody.cs +PlexAPI/Models/Requests/MyPlex.cs +PlexAPI/Models/Requests/GetMyPlexAccountResponseBody.cs +PlexAPI/Models/Requests/GetMyPlexAccountResponse.cs +PlexAPI/Models/Requests/MinSize.cs +PlexAPI/Models/Requests/Upscale.cs +PlexAPI/Models/Requests/GetResizedPhotoRequest.cs +PlexAPI/Models/Requests/GetResizedPhotoErrors.cs +PlexAPI/Models/Requests/GetResizedPhotoResponseBody.cs +PlexAPI/Models/Requests/GetResizedPhotoResponse.cs +PlexAPI/Models/Requests/GetServerListErrors.cs +PlexAPI/Models/Requests/GetServerListServerResponseBody.cs +PlexAPI/Models/Requests/GetServerListServer.cs +PlexAPI/Models/Requests/GetServerListMediaContainer.cs +PlexAPI/Models/Requests/GetServerListResponseBody.cs +PlexAPI/Models/Requests/GetServerListResponse.cs +PlexAPI/Models/Requests/MarkPlayedRequest.cs +PlexAPI/Models/Requests/MarkPlayedErrors.cs +PlexAPI/Models/Requests/MarkPlayedResponseBody.cs +PlexAPI/Models/Requests/MarkPlayedResponse.cs +PlexAPI/Models/Requests/MarkUnplayedRequest.cs +PlexAPI/Models/Requests/MarkUnplayedErrors.cs +PlexAPI/Models/Requests/MarkUnplayedResponseBody.cs +PlexAPI/Models/Requests/MarkUnplayedResponse.cs +PlexAPI/Models/Requests/UpdatePlayProgressRequest.cs +PlexAPI/Models/Requests/UpdatePlayProgressErrors.cs +PlexAPI/Models/Requests/UpdatePlayProgressResponseBody.cs +PlexAPI/Models/Requests/UpdatePlayProgressResponse.cs +PlexAPI/Models/Requests/GetServerActivitiesErrors.cs +PlexAPI/Models/Requests/GetServerActivitiesActivitiesResponseBody.cs +PlexAPI/Models/Requests/Context.cs +PlexAPI/Models/Requests/Activity.cs +PlexAPI/Models/Requests/GetServerActivitiesMediaContainer.cs +PlexAPI/Models/Requests/GetServerActivitiesResponseBody.cs +PlexAPI/Models/Requests/GetServerActivitiesResponse.cs +PlexAPI/Models/Requests/CancelServerActivitiesRequest.cs +PlexAPI/Models/Requests/CancelServerActivitiesErrors.cs +PlexAPI/Models/Requests/CancelServerActivitiesResponseBody.cs +PlexAPI/Models/Requests/CancelServerActivitiesResponse.cs +PlexAPI/Models/Requests/GetButlerTasksErrors.cs +PlexAPI/Models/Requests/GetButlerTasksButlerResponseBody.cs +PlexAPI/Models/Requests/ButlerTask.cs +PlexAPI/Models/Requests/ButlerTasks.cs +PlexAPI/Models/Requests/GetButlerTasksResponseBody.cs +PlexAPI/Models/Requests/GetButlerTasksResponse.cs +PlexAPI/Models/Requests/StartAllTasksErrors.cs +PlexAPI/Models/Requests/StartAllTasksResponseBody.cs +PlexAPI/Models/Requests/StartAllTasksResponse.cs +PlexAPI/Models/Requests/StopAllTasksErrors.cs +PlexAPI/Models/Requests/StopAllTasksResponseBody.cs +PlexAPI/Models/Requests/StopAllTasksResponse.cs +PlexAPI/Models/Requests/TaskName.cs +PlexAPI/Models/Requests/StartTaskRequest.cs +PlexAPI/Models/Requests/StartTaskErrors.cs +PlexAPI/Models/Requests/StartTaskResponseBody.cs +PlexAPI/Models/Requests/StartTaskResponse.cs +PlexAPI/Models/Requests/PathParamTaskName.cs +PlexAPI/Models/Requests/StopTaskRequest.cs +PlexAPI/Models/Requests/StopTaskErrors.cs +PlexAPI/Models/Requests/StopTaskResponseBody.cs +PlexAPI/Models/Requests/StopTaskResponse.cs +PlexAPI/Models/Requests/OnlyTransient.cs +PlexAPI/Models/Requests/GetGlobalHubsRequest.cs +PlexAPI/Models/Requests/GetGlobalHubsErrors.cs +PlexAPI/Models/Requests/GetGlobalHubsResponseBody.cs +PlexAPI/Models/Requests/GetGlobalHubsResponse.cs +PlexAPI/Models/Requests/QueryParamOnlyTransient.cs +PlexAPI/Models/Requests/GetLibraryHubsRequest.cs +PlexAPI/Models/Requests/GetLibraryHubsErrors.cs +PlexAPI/Models/Requests/GetLibraryHubsResponseBody.cs +PlexAPI/Models/Requests/GetLibraryHubsResponse.cs +PlexAPI/Models/Requests/PerformSearchRequest.cs +PlexAPI/Models/Requests/PerformSearchErrors.cs +PlexAPI/Models/Requests/PerformSearchResponseBody.cs +PlexAPI/Models/Requests/PerformSearchResponse.cs +PlexAPI/Models/Requests/PerformVoiceSearchRequest.cs +PlexAPI/Models/Requests/PerformVoiceSearchErrors.cs +PlexAPI/Models/Requests/PerformVoiceSearchResponseBody.cs +PlexAPI/Models/Requests/PerformVoiceSearchResponse.cs +PlexAPI/Models/Requests/GetSearchResultsRequest.cs +PlexAPI/Models/Requests/GetSearchResultsErrors.cs +PlexAPI/Models/Requests/GetSearchResultsSearchResponseBody.cs +PlexAPI/Models/Requests/GetSearchResultsPart.cs +PlexAPI/Models/Requests/GetSearchResultsMedia.cs +PlexAPI/Models/Requests/GetSearchResultsGenre.cs +PlexAPI/Models/Requests/GetSearchResultsDirector.cs +PlexAPI/Models/Requests/GetSearchResultsWriter.cs +PlexAPI/Models/Requests/GetSearchResultsCountry.cs +PlexAPI/Models/Requests/GetSearchResultsRole.cs +PlexAPI/Models/Requests/GetSearchResultsMetadata.cs +PlexAPI/Models/Requests/Provider.cs +PlexAPI/Models/Requests/GetSearchResultsMediaContainer.cs +PlexAPI/Models/Requests/GetSearchResultsResponseBody.cs +PlexAPI/Models/Requests/GetSearchResultsResponse.cs +PlexAPI/Models/Requests/GetFileHashRequest.cs +PlexAPI/Models/Requests/GetFileHashErrors.cs +PlexAPI/Models/Requests/GetFileHashResponseBody.cs +PlexAPI/Models/Requests/GetFileHashResponse.cs +PlexAPI/Models/Requests/GetRecentlyAddedErrors.cs +PlexAPI/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs +PlexAPI/Models/Requests/Part.cs +PlexAPI/Models/Requests/Media.cs +PlexAPI/Models/Requests/Genre.cs +PlexAPI/Models/Requests/Director.cs +PlexAPI/Models/Requests/Writer.cs +PlexAPI/Models/Requests/Country.cs +PlexAPI/Models/Requests/Role.cs +PlexAPI/Models/Requests/Metadata.cs +PlexAPI/Models/Requests/GetRecentlyAddedMediaContainer.cs +PlexAPI/Models/Requests/GetRecentlyAddedResponseBody.cs +PlexAPI/Models/Requests/GetRecentlyAddedResponse.cs +PlexAPI/Models/Requests/GetLibrariesErrors.cs +PlexAPI/Models/Requests/GetLibrariesResponseBody.cs +PlexAPI/Models/Requests/GetLibrariesResponse.cs +PlexAPI/Models/Requests/IncludeDetails.cs +PlexAPI/Models/Requests/GetLibraryRequest.cs +PlexAPI/Models/Requests/GetLibraryErrors.cs +PlexAPI/Models/Requests/GetLibraryResponseBody.cs +PlexAPI/Models/Requests/GetLibraryResponse.cs +PlexAPI/Models/Requests/DeleteLibraryRequest.cs +PlexAPI/Models/Requests/DeleteLibraryErrors.cs +PlexAPI/Models/Requests/DeleteLibraryResponseBody.cs +PlexAPI/Models/Requests/DeleteLibraryResponse.cs +PlexAPI/Models/Requests/GetLibraryItemsRequest.cs +PlexAPI/Models/Requests/GetLibraryItemsErrors.cs +PlexAPI/Models/Requests/GetLibraryItemsResponseBody.cs +PlexAPI/Models/Requests/GetLibraryItemsResponse.cs +PlexAPI/Models/Requests/RefreshLibraryRequest.cs +PlexAPI/Models/Requests/RefreshLibraryErrors.cs +PlexAPI/Models/Requests/RefreshLibraryResponseBody.cs +PlexAPI/Models/Requests/RefreshLibraryResponse.cs +PlexAPI/Models/Requests/GetLatestLibraryItemsRequest.cs +PlexAPI/Models/Requests/GetLatestLibraryItemsErrors.cs +PlexAPI/Models/Requests/GetLatestLibraryItemsResponseBody.cs +PlexAPI/Models/Requests/GetLatestLibraryItemsResponse.cs +PlexAPI/Models/Requests/GetCommonLibraryItemsRequest.cs +PlexAPI/Models/Requests/GetCommonLibraryItemsErrors.cs +PlexAPI/Models/Requests/GetCommonLibraryItemsResponseBody.cs +PlexAPI/Models/Requests/GetCommonLibraryItemsResponse.cs +PlexAPI/Models/Requests/GetMetadataRequest.cs +PlexAPI/Models/Requests/GetMetadataErrors.cs +PlexAPI/Models/Requests/GetMetadataResponseBody.cs +PlexAPI/Models/Requests/GetMetadataResponse.cs +PlexAPI/Models/Requests/GetMetadataChildrenRequest.cs +PlexAPI/Models/Requests/GetMetadataChildrenErrors.cs +PlexAPI/Models/Requests/GetMetadataChildrenResponseBody.cs +PlexAPI/Models/Requests/GetMetadataChildrenResponse.cs +PlexAPI/Models/Requests/GetOnDeckErrors.cs +PlexAPI/Models/Requests/GetOnDeckLibraryResponseBody.cs +PlexAPI/Models/Requests/Stream.cs +PlexAPI/Models/Requests/GetOnDeckPart.cs +PlexAPI/Models/Requests/GetOnDeckMedia.cs +PlexAPI/Models/Requests/Guids.cs +PlexAPI/Models/Requests/GetOnDeckMetadata.cs +PlexAPI/Models/Requests/GetOnDeckMediaContainer.cs +PlexAPI/Models/Requests/GetOnDeckResponseBody.cs +PlexAPI/Models/Requests/GetOnDeckResponse.cs +PlexAPI/Models/Requests/Level.cs +PlexAPI/Models/Requests/LogLineRequest.cs +PlexAPI/Models/Requests/LogLineErrors.cs +PlexAPI/Models/Requests/LogLineResponseBody.cs +PlexAPI/Models/Requests/LogLineResponse.cs +PlexAPI/Models/Requests/LogMultiLineErrors.cs +PlexAPI/Models/Requests/LogMultiLineResponseBody.cs +PlexAPI/Models/Requests/LogMultiLineResponse.cs +PlexAPI/Models/Requests/EnablePaperTrailErrors.cs +PlexAPI/Models/Requests/EnablePaperTrailResponseBody.cs +PlexAPI/Models/Requests/EnablePaperTrailResponse.cs +PlexAPI/Models/Requests/Type.cs +PlexAPI/Models/Requests/Smart.cs +PlexAPI/Models/Requests/CreatePlaylistRequest.cs +PlexAPI/Models/Requests/CreatePlaylistErrors.cs +PlexAPI/Models/Requests/CreatePlaylistResponseBody.cs +PlexAPI/Models/Requests/CreatePlaylistResponse.cs +PlexAPI/Models/Requests/PlaylistType.cs +PlexAPI/Models/Requests/QueryParamSmart.cs +PlexAPI/Models/Requests/GetPlaylistsRequest.cs +PlexAPI/Models/Requests/GetPlaylistsErrors.cs +PlexAPI/Models/Requests/GetPlaylistsResponseBody.cs +PlexAPI/Models/Requests/GetPlaylistsResponse.cs +PlexAPI/Models/Requests/GetPlaylistRequest.cs +PlexAPI/Models/Requests/GetPlaylistErrors.cs +PlexAPI/Models/Requests/GetPlaylistResponseBody.cs +PlexAPI/Models/Requests/GetPlaylistResponse.cs +PlexAPI/Models/Requests/DeletePlaylistRequest.cs +PlexAPI/Models/Requests/DeletePlaylistErrors.cs +PlexAPI/Models/Requests/DeletePlaylistResponseBody.cs +PlexAPI/Models/Requests/DeletePlaylistResponse.cs +PlexAPI/Models/Requests/UpdatePlaylistRequest.cs +PlexAPI/Models/Requests/UpdatePlaylistErrors.cs +PlexAPI/Models/Requests/UpdatePlaylistResponseBody.cs +PlexAPI/Models/Requests/UpdatePlaylistResponse.cs +PlexAPI/Models/Requests/GetPlaylistContentsRequest.cs +PlexAPI/Models/Requests/GetPlaylistContentsErrors.cs +PlexAPI/Models/Requests/GetPlaylistContentsResponseBody.cs +PlexAPI/Models/Requests/GetPlaylistContentsResponse.cs +PlexAPI/Models/Requests/ClearPlaylistContentsRequest.cs +PlexAPI/Models/Requests/ClearPlaylistContentsErrors.cs +PlexAPI/Models/Requests/ClearPlaylistContentsResponseBody.cs +PlexAPI/Models/Requests/ClearPlaylistContentsResponse.cs +PlexAPI/Models/Requests/AddPlaylistContentsRequest.cs +PlexAPI/Models/Requests/AddPlaylistContentsErrors.cs +PlexAPI/Models/Requests/AddPlaylistContentsResponseBody.cs +PlexAPI/Models/Requests/AddPlaylistContentsResponse.cs +PlexAPI/Models/Requests/Force.cs +PlexAPI/Models/Requests/UploadPlaylistRequest.cs +PlexAPI/Models/Requests/UploadPlaylistErrors.cs +PlexAPI/Models/Requests/UploadPlaylistResponseBody.cs +PlexAPI/Models/Requests/UploadPlaylistResponse.cs +PlexAPI/Models/Requests/QueryParamType.cs +PlexAPI/Models/Requests/Scope.cs +PlexAPI/Models/Requests/GetTransientTokenRequest.cs +PlexAPI/Models/Requests/GetTransientTokenErrors.cs +PlexAPI/Models/Requests/GetTransientTokenResponseBody.cs +PlexAPI/Models/Requests/GetTransientTokenResponse.cs +PlexAPI/Models/Requests/GetSourceConnectionInformationRequest.cs +PlexAPI/Models/Requests/GetSourceConnectionInformationErrors.cs +PlexAPI/Models/Requests/GetSourceConnectionInformationResponseBody.cs +PlexAPI/Models/Requests/GetSourceConnectionInformationResponse.cs +PlexAPI/Models/Requests/GetSessionsErrors.cs +PlexAPI/Models/Requests/GetSessionsResponseBody.cs +PlexAPI/Models/Requests/GetSessionsResponse.cs +PlexAPI/Models/Requests/GetSessionHistoryErrors.cs +PlexAPI/Models/Requests/GetSessionHistoryResponseBody.cs +PlexAPI/Models/Requests/GetSessionHistoryResponse.cs +PlexAPI/Models/Requests/GetTranscodeSessionsErrors.cs +PlexAPI/Models/Requests/GetTranscodeSessionsSessionsResponseBody.cs +PlexAPI/Models/Requests/TranscodeSession.cs +PlexAPI/Models/Requests/GetTranscodeSessionsMediaContainer.cs +PlexAPI/Models/Requests/GetTranscodeSessionsResponseBody.cs +PlexAPI/Models/Requests/GetTranscodeSessionsResponse.cs +PlexAPI/Models/Requests/StopTranscodeSessionRequest.cs +PlexAPI/Models/Requests/StopTranscodeSessionErrors.cs +PlexAPI/Models/Requests/StopTranscodeSessionResponseBody.cs +PlexAPI/Models/Requests/StopTranscodeSessionResponse.cs +PlexAPI/Models/Requests/GetUpdateStatusErrors.cs +PlexAPI/Models/Requests/GetUpdateStatusResponseBody.cs +PlexAPI/Models/Requests/GetUpdateStatusResponse.cs +PlexAPI/Models/Requests/Download.cs +PlexAPI/Models/Requests/CheckForUpdatesRequest.cs +PlexAPI/Models/Requests/CheckForUpdatesErrors.cs +PlexAPI/Models/Requests/CheckForUpdatesResponseBody.cs +PlexAPI/Models/Requests/CheckForUpdatesResponse.cs +PlexAPI/Models/Requests/Tonight.cs +PlexAPI/Models/Requests/Skip.cs +PlexAPI/Models/Requests/ApplyUpdatesRequest.cs +PlexAPI/Models/Requests/ApplyUpdatesErrors.cs +PlexAPI/Models/Requests/ApplyUpdatesResponseBody.cs +PlexAPI/Models/Requests/ApplyUpdatesResponse.cs +PlexAPI/Models/Requests/StartUniversalTranscodeRequest.cs +PlexAPI/Models/Requests/StartUniversalTranscodeErrors.cs +PlexAPI/Models/Requests/StartUniversalTranscodeResponseBody.cs +PlexAPI/Models/Requests/StartUniversalTranscodeResponse.cs +PlexAPI/Models/Requests/State.cs +PlexAPI/Models/Requests/GetTimelineRequest.cs +PlexAPI/Models/Requests/GetTimelineErrors.cs +PlexAPI/Models/Requests/GetTimelineResponseBody.cs +PlexAPI/Models/Requests/GetTimelineResponse.cs +PlexAPI/Models/Components/Security.cs +docs/Models/Requests/Errors.md +docs/Models/Requests/GetServerCapabilitiesServerResponseBody.md +docs/Models/Requests/Directory.md +docs/Models/Requests/MediaContainer.md +docs/Models/Requests/GetServerCapabilitiesResponseBody.md +docs/Models/Requests/GetServerCapabilitiesResponse.md +docs/Models/Requests/GetServerPreferencesErrors.md +docs/Models/Requests/GetServerPreferencesResponseBody.md +docs/Models/Requests/GetServerPreferencesResponse.md +docs/Models/Requests/GetAvailableClientsErrors.md +docs/Models/Requests/GetAvailableClientsResponseBody.md +docs/Models/Requests/Server.md +docs/Models/Requests/GetAvailableClientsMediaContainer.md +docs/Models/Requests/ResponseBody.md +docs/Models/Requests/GetAvailableClientsResponse.md +docs/Models/Requests/GetDevicesErrors.md +docs/Models/Requests/GetDevicesServerResponseBody.md +docs/Models/Requests/Device.md +docs/Models/Requests/GetDevicesMediaContainer.md +docs/Models/Requests/GetDevicesResponseBody.md +docs/Models/Requests/GetDevicesResponse.md +docs/Models/Requests/GetServerIdentityErrors.md +docs/Models/Requests/GetServerIdentityServerResponseBody.md +docs/Models/Requests/GetServerIdentityMediaContainer.md +docs/Models/Requests/GetServerIdentityResponseBody.md +docs/Models/Requests/GetServerIdentityResponse.md +docs/Models/Requests/GetMyPlexAccountErrors.md +docs/Models/Requests/GetMyPlexAccountServerResponseBody.md +docs/Models/Requests/MyPlex.md +docs/Models/Requests/GetMyPlexAccountResponseBody.md +docs/Models/Requests/GetMyPlexAccountResponse.md +docs/Models/Requests/MinSize.md +docs/Models/Requests/Upscale.md +docs/Models/Requests/GetResizedPhotoRequest.md +docs/Models/Requests/GetResizedPhotoErrors.md +docs/Models/Requests/GetResizedPhotoResponseBody.md +docs/Models/Requests/GetResizedPhotoResponse.md +docs/Models/Requests/GetServerListErrors.md +docs/Models/Requests/GetServerListServerResponseBody.md +docs/Models/Requests/GetServerListServer.md +docs/Models/Requests/GetServerListMediaContainer.md +docs/Models/Requests/GetServerListResponseBody.md +docs/Models/Requests/GetServerListResponse.md +docs/Models/Requests/MarkPlayedRequest.md +docs/Models/Requests/MarkPlayedErrors.md +docs/Models/Requests/MarkPlayedResponseBody.md +docs/Models/Requests/MarkPlayedResponse.md +docs/Models/Requests/MarkUnplayedRequest.md +docs/Models/Requests/MarkUnplayedErrors.md +docs/Models/Requests/MarkUnplayedResponseBody.md +docs/Models/Requests/MarkUnplayedResponse.md +docs/Models/Requests/UpdatePlayProgressRequest.md +docs/Models/Requests/UpdatePlayProgressErrors.md +docs/Models/Requests/UpdatePlayProgressResponseBody.md +docs/Models/Requests/UpdatePlayProgressResponse.md +docs/Models/Requests/GetServerActivitiesErrors.md +docs/Models/Requests/GetServerActivitiesActivitiesResponseBody.md +docs/Models/Requests/Context.md +docs/Models/Requests/Activity.md +docs/Models/Requests/GetServerActivitiesMediaContainer.md +docs/Models/Requests/GetServerActivitiesResponseBody.md +docs/Models/Requests/GetServerActivitiesResponse.md +docs/Models/Requests/CancelServerActivitiesRequest.md +docs/Models/Requests/CancelServerActivitiesErrors.md +docs/Models/Requests/CancelServerActivitiesResponseBody.md +docs/Models/Requests/CancelServerActivitiesResponse.md +docs/Models/Requests/GetButlerTasksErrors.md +docs/Models/Requests/GetButlerTasksButlerResponseBody.md +docs/Models/Requests/ButlerTask.md +docs/Models/Requests/ButlerTasks.md +docs/Models/Requests/GetButlerTasksResponseBody.md +docs/Models/Requests/GetButlerTasksResponse.md +docs/Models/Requests/StartAllTasksErrors.md +docs/Models/Requests/StartAllTasksResponseBody.md +docs/Models/Requests/StartAllTasksResponse.md +docs/Models/Requests/StopAllTasksErrors.md +docs/Models/Requests/StopAllTasksResponseBody.md +docs/Models/Requests/StopAllTasksResponse.md +docs/Models/Requests/TaskName.md +docs/Models/Requests/StartTaskRequest.md +docs/Models/Requests/StartTaskErrors.md +docs/Models/Requests/StartTaskResponseBody.md +docs/Models/Requests/StartTaskResponse.md +docs/Models/Requests/PathParamTaskName.md +docs/Models/Requests/StopTaskRequest.md +docs/Models/Requests/StopTaskErrors.md +docs/Models/Requests/StopTaskResponseBody.md +docs/Models/Requests/StopTaskResponse.md +docs/Models/Requests/OnlyTransient.md +docs/Models/Requests/GetGlobalHubsRequest.md +docs/Models/Requests/GetGlobalHubsErrors.md +docs/Models/Requests/GetGlobalHubsResponseBody.md +docs/Models/Requests/GetGlobalHubsResponse.md +docs/Models/Requests/QueryParamOnlyTransient.md +docs/Models/Requests/GetLibraryHubsRequest.md +docs/Models/Requests/GetLibraryHubsErrors.md +docs/Models/Requests/GetLibraryHubsResponseBody.md +docs/Models/Requests/GetLibraryHubsResponse.md +docs/Models/Requests/PerformSearchRequest.md +docs/Models/Requests/PerformSearchErrors.md +docs/Models/Requests/PerformSearchResponseBody.md +docs/Models/Requests/PerformSearchResponse.md +docs/Models/Requests/PerformVoiceSearchRequest.md +docs/Models/Requests/PerformVoiceSearchErrors.md +docs/Models/Requests/PerformVoiceSearchResponseBody.md +docs/Models/Requests/PerformVoiceSearchResponse.md +docs/Models/Requests/GetSearchResultsRequest.md +docs/Models/Requests/GetSearchResultsErrors.md +docs/Models/Requests/GetSearchResultsSearchResponseBody.md +docs/Models/Requests/GetSearchResultsPart.md +docs/Models/Requests/GetSearchResultsMedia.md +docs/Models/Requests/GetSearchResultsGenre.md +docs/Models/Requests/GetSearchResultsDirector.md +docs/Models/Requests/GetSearchResultsWriter.md +docs/Models/Requests/GetSearchResultsCountry.md +docs/Models/Requests/GetSearchResultsRole.md +docs/Models/Requests/GetSearchResultsMetadata.md +docs/Models/Requests/Provider.md +docs/Models/Requests/GetSearchResultsMediaContainer.md +docs/Models/Requests/GetSearchResultsResponseBody.md +docs/Models/Requests/GetSearchResultsResponse.md +docs/Models/Requests/GetFileHashRequest.md +docs/Models/Requests/GetFileHashErrors.md +docs/Models/Requests/GetFileHashResponseBody.md +docs/Models/Requests/GetFileHashResponse.md +docs/Models/Requests/GetRecentlyAddedErrors.md +docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md +docs/Models/Requests/Part.md +docs/Models/Requests/Media.md +docs/Models/Requests/Genre.md +docs/Models/Requests/Director.md +docs/Models/Requests/Writer.md +docs/Models/Requests/Country.md +docs/Models/Requests/Role.md +docs/Models/Requests/Metadata.md +docs/Models/Requests/GetRecentlyAddedMediaContainer.md +docs/Models/Requests/GetRecentlyAddedResponseBody.md +docs/Models/Requests/GetRecentlyAddedResponse.md +docs/Models/Requests/GetLibrariesErrors.md +docs/Models/Requests/GetLibrariesResponseBody.md +docs/Models/Requests/GetLibrariesResponse.md +docs/Models/Requests/IncludeDetails.md +docs/Models/Requests/GetLibraryRequest.md +docs/Models/Requests/GetLibraryErrors.md +docs/Models/Requests/GetLibraryResponseBody.md +docs/Models/Requests/GetLibraryResponse.md +docs/Models/Requests/DeleteLibraryRequest.md +docs/Models/Requests/DeleteLibraryErrors.md +docs/Models/Requests/DeleteLibraryResponseBody.md +docs/Models/Requests/DeleteLibraryResponse.md +docs/Models/Requests/GetLibraryItemsRequest.md +docs/Models/Requests/GetLibraryItemsErrors.md +docs/Models/Requests/GetLibraryItemsResponseBody.md +docs/Models/Requests/GetLibraryItemsResponse.md +docs/Models/Requests/RefreshLibraryRequest.md +docs/Models/Requests/RefreshLibraryErrors.md +docs/Models/Requests/RefreshLibraryResponseBody.md +docs/Models/Requests/RefreshLibraryResponse.md +docs/Models/Requests/GetLatestLibraryItemsRequest.md +docs/Models/Requests/GetLatestLibraryItemsErrors.md +docs/Models/Requests/GetLatestLibraryItemsResponseBody.md +docs/Models/Requests/GetLatestLibraryItemsResponse.md +docs/Models/Requests/GetCommonLibraryItemsRequest.md +docs/Models/Requests/GetCommonLibraryItemsErrors.md +docs/Models/Requests/GetCommonLibraryItemsResponseBody.md +docs/Models/Requests/GetCommonLibraryItemsResponse.md +docs/Models/Requests/GetMetadataRequest.md +docs/Models/Requests/GetMetadataErrors.md +docs/Models/Requests/GetMetadataResponseBody.md +docs/Models/Requests/GetMetadataResponse.md +docs/Models/Requests/GetMetadataChildrenRequest.md +docs/Models/Requests/GetMetadataChildrenErrors.md +docs/Models/Requests/GetMetadataChildrenResponseBody.md +docs/Models/Requests/GetMetadataChildrenResponse.md +docs/Models/Requests/GetOnDeckErrors.md +docs/Models/Requests/GetOnDeckLibraryResponseBody.md +docs/Models/Requests/Stream.md +docs/Models/Requests/GetOnDeckPart.md +docs/Models/Requests/GetOnDeckMedia.md +docs/Models/Requests/Guids.md +docs/Models/Requests/GetOnDeckMetadata.md +docs/Models/Requests/GetOnDeckMediaContainer.md +docs/Models/Requests/GetOnDeckResponseBody.md +docs/Models/Requests/GetOnDeckResponse.md +docs/Models/Requests/Level.md +docs/Models/Requests/LogLineRequest.md +docs/Models/Requests/LogLineErrors.md +docs/Models/Requests/LogLineResponseBody.md +docs/Models/Requests/LogLineResponse.md +docs/Models/Requests/LogMultiLineErrors.md +docs/Models/Requests/LogMultiLineResponseBody.md +docs/Models/Requests/LogMultiLineResponse.md +docs/Models/Requests/EnablePaperTrailErrors.md +docs/Models/Requests/EnablePaperTrailResponseBody.md +docs/Models/Requests/EnablePaperTrailResponse.md +docs/Models/Requests/Type.md +docs/Models/Requests/Smart.md +docs/Models/Requests/CreatePlaylistRequest.md +docs/Models/Requests/CreatePlaylistErrors.md +docs/Models/Requests/CreatePlaylistResponseBody.md +docs/Models/Requests/CreatePlaylistResponse.md +docs/Models/Requests/PlaylistType.md +docs/Models/Requests/QueryParamSmart.md +docs/Models/Requests/GetPlaylistsRequest.md +docs/Models/Requests/GetPlaylistsErrors.md +docs/Models/Requests/GetPlaylistsResponseBody.md +docs/Models/Requests/GetPlaylistsResponse.md +docs/Models/Requests/GetPlaylistRequest.md +docs/Models/Requests/GetPlaylistErrors.md +docs/Models/Requests/GetPlaylistResponseBody.md +docs/Models/Requests/GetPlaylistResponse.md +docs/Models/Requests/DeletePlaylistRequest.md +docs/Models/Requests/DeletePlaylistErrors.md +docs/Models/Requests/DeletePlaylistResponseBody.md +docs/Models/Requests/DeletePlaylistResponse.md +docs/Models/Requests/UpdatePlaylistRequest.md +docs/Models/Requests/UpdatePlaylistErrors.md +docs/Models/Requests/UpdatePlaylistResponseBody.md +docs/Models/Requests/UpdatePlaylistResponse.md +docs/Models/Requests/GetPlaylistContentsRequest.md +docs/Models/Requests/GetPlaylistContentsErrors.md +docs/Models/Requests/GetPlaylistContentsResponseBody.md +docs/Models/Requests/GetPlaylistContentsResponse.md +docs/Models/Requests/ClearPlaylistContentsRequest.md +docs/Models/Requests/ClearPlaylistContentsErrors.md +docs/Models/Requests/ClearPlaylistContentsResponseBody.md +docs/Models/Requests/ClearPlaylistContentsResponse.md +docs/Models/Requests/AddPlaylistContentsRequest.md +docs/Models/Requests/AddPlaylistContentsErrors.md +docs/Models/Requests/AddPlaylistContentsResponseBody.md +docs/Models/Requests/AddPlaylistContentsResponse.md +docs/Models/Requests/Force.md +docs/Models/Requests/UploadPlaylistRequest.md +docs/Models/Requests/UploadPlaylistErrors.md +docs/Models/Requests/UploadPlaylistResponseBody.md +docs/Models/Requests/UploadPlaylistResponse.md +docs/Models/Requests/QueryParamType.md +docs/Models/Requests/Scope.md +docs/Models/Requests/GetTransientTokenRequest.md +docs/Models/Requests/GetTransientTokenErrors.md +docs/Models/Requests/GetTransientTokenResponseBody.md +docs/Models/Requests/GetTransientTokenResponse.md +docs/Models/Requests/GetSourceConnectionInformationRequest.md +docs/Models/Requests/GetSourceConnectionInformationErrors.md +docs/Models/Requests/GetSourceConnectionInformationResponseBody.md +docs/Models/Requests/GetSourceConnectionInformationResponse.md +docs/Models/Requests/GetSessionsErrors.md +docs/Models/Requests/GetSessionsResponseBody.md +docs/Models/Requests/GetSessionsResponse.md +docs/Models/Requests/GetSessionHistoryErrors.md +docs/Models/Requests/GetSessionHistoryResponseBody.md +docs/Models/Requests/GetSessionHistoryResponse.md +docs/Models/Requests/GetTranscodeSessionsErrors.md +docs/Models/Requests/GetTranscodeSessionsSessionsResponseBody.md +docs/Models/Requests/TranscodeSession.md +docs/Models/Requests/GetTranscodeSessionsMediaContainer.md +docs/Models/Requests/GetTranscodeSessionsResponseBody.md +docs/Models/Requests/GetTranscodeSessionsResponse.md +docs/Models/Requests/StopTranscodeSessionRequest.md +docs/Models/Requests/StopTranscodeSessionErrors.md +docs/Models/Requests/StopTranscodeSessionResponseBody.md +docs/Models/Requests/StopTranscodeSessionResponse.md +docs/Models/Requests/GetUpdateStatusErrors.md +docs/Models/Requests/GetUpdateStatusResponseBody.md +docs/Models/Requests/GetUpdateStatusResponse.md +docs/Models/Requests/Download.md +docs/Models/Requests/CheckForUpdatesRequest.md +docs/Models/Requests/CheckForUpdatesErrors.md +docs/Models/Requests/CheckForUpdatesResponseBody.md +docs/Models/Requests/CheckForUpdatesResponse.md +docs/Models/Requests/Tonight.md +docs/Models/Requests/Skip.md +docs/Models/Requests/ApplyUpdatesRequest.md +docs/Models/Requests/ApplyUpdatesErrors.md +docs/Models/Requests/ApplyUpdatesResponseBody.md +docs/Models/Requests/ApplyUpdatesResponse.md +docs/Models/Requests/StartUniversalTranscodeRequest.md +docs/Models/Requests/StartUniversalTranscodeErrors.md +docs/Models/Requests/StartUniversalTranscodeResponseBody.md +docs/Models/Requests/StartUniversalTranscodeResponse.md +docs/Models/Requests/State.md +docs/Models/Requests/GetTimelineRequest.md +docs/Models/Requests/GetTimelineErrors.md +docs/Models/Requests/GetTimelineResponseBody.md +docs/Models/Requests/GetTimelineResponse.md +docs/Models/Components/Security.md +docs/sdks/plexapi/README.md +docs/sdks/server/README.md +docs/sdks/media/README.md +docs/sdks/activities/README.md +docs/sdks/butler/README.md +docs/sdks/hubs/README.md +docs/sdks/search/README.md +docs/sdks/library/README.md +docs/sdks/log/README.md +docs/sdks/playlists/README.md +docs/sdks/security/README.md +docs/sdks/sessions/README.md +docs/sdks/updater/README.md +docs/sdks/video/README.md +USAGE.md +.gitattributes \ No newline at end of file diff --git a/gen.yaml b/gen.yaml index 873c395..d9c8c46 100644 --- a/gen.yaml +++ b/gen.yaml @@ -1,16 +1,28 @@ configVersion: 1.0.0 +management: + docChecksum: 550154cf1b4d0c237436fb18c418b5db + docVersion: 0.0.3 + speakeasyVersion: 1.129.1 + generationVersion: 2.223.3 generation: comments: {} sdkClassName: Plex-API - repoURL: https://github.com/speakeasy-sdks/Personal-sample-sdk-9.git + repoURL: https://github.com/LukeHagar/plexcsharp.git maintainOpenAPIOrder: true usageSnippets: optionalPropertyRendering: withExample - useClassNamesForArrayFields: true fixes: nameResolutionDec2023: false + useClassNamesForArrayFields: true +features: + csharp: + core: 3.2.1 + flattening: 2.81.1 + globalSecurity: 2.81.2 + globalServerURLs: 2.82.2 + nameOverrides: 2.81.1 csharp: - version: 0.0.1 + version: 0.1.0 author: LukeHagar dotnetVersion: net5.0 imports: @@ -25,3 +37,5 @@ csharp: maxMethodParams: 4 outputModelSuffix: output packageName: Plex-API + published: true + repoSubDirectory: .